From 9317522473623b5a474386363a312843a5278e10 Mon Sep 17 00:00:00 2001 From: eye-gu <734164350@qq.com> Date: Tue, 10 Mar 2026 23:29:52 +0800 Subject: [PATCH 1/7] Introduce JPA to Simplify Simple SQL --- shenyu-admin/pom.xml | 5 + .../shenyu/admin/config/JpaConfiguration.java | 26 +++ .../controller/AlertReceiverController.java | 4 +- .../admin/controller/ApiController.java | 6 +- .../admin/controller/AppAuthController.java | 17 +- .../controller/DashboardUserController.java | 6 +- .../controller/DataPermissionController.java | 4 +- .../DiscoveryUpstreamController.java | 4 +- .../admin/controller/MetaDataController.java | 4 +- .../MockRequestRecordController.java | 4 +- .../admin/controller/NamespaceController.java | 4 +- .../controller/NamespacePluginController.java | 18 +- .../admin/controller/PluginController.java | 16 +- .../controller/PluginHandleController.java | 6 +- .../controller/ProxySelectorController.java | 12 +- .../admin/controller/RegistryController.java | 4 +- .../admin/controller/ResourceController.java | 4 +- .../admin/controller/RoleController.java | 6 +- .../admin/controller/RuleController.java | 10 +- .../controller/ScalePolicyController.java | 4 +- .../admin/controller/ScaleRlueController.java | 12 +- .../admin/controller/SelectorController.java | 6 +- .../controller/ShenyuDictController.java | 6 +- .../admin/controller/TagController.java | 4 +- .../admin/jpa/converter/BooleanConverter.java | 43 ++++ .../jpa/converter/ListByteConverter.java | 42 ++++ .../jpa/converter/MapStringConverter.java | 41 ++++ .../repository/AiProxyApiKeyRepository.java | 70 ++++++ .../repository/AlertReceiverRepository.java | 44 ++++ .../admin/jpa/repository/ApiRepository.java | 67 ++++++ .../repository/ApiRuleRelationRepository.java | 26 +++ .../jpa/repository/AppAuthRepository.java | 75 +++++++ .../jpa/repository/AuthParamRepository.java | 47 ++++ .../jpa/repository/AuthPathRepository.java | 63 ++++++ .../repository/ClusterMasterRepository.java | 29 +++ .../repository/DashboardUserRepository.java | 103 +++++++++ .../repository/DataPermissionRepository.java | 39 ++++ .../jpa/repository/DetailRepository.java | 37 +++ .../DiscoveryHandlerRepository.java | 43 ++++ .../repository/DiscoveryRelRepository.java | 29 +++ .../jpa/repository/DiscoveryRepository.java | 59 +++++ .../DiscoveryUpstreamRepository.java | 46 ++++ .../admin/jpa/repository/FieldRepository.java | 60 +++++ .../repository/InstanceInfoRepository.java | 29 +++ .../jpa/repository/MetaDataRepository.java | 66 ++++++ .../MockRequestRecordRepository.java | 46 ++++ .../admin/jpa/repository/ModelRepository.java | 29 +++ .../NamespacePluginRelRepository.java | 37 +++ .../jpa/repository/NamespaceRepository.java | 75 +++++++ .../NamespaceUserRelRepository.java | 39 ++++ .../OperationRecordLogRepository.java | 65 ++++++ .../jpa/repository/ParameterRepository.java | 29 +++ .../jpa/repository/PermissionRepository.java | 29 +++ .../repository/PluginHandleRepository.java | 69 ++++++ .../jpa/repository/PluginRepository.java | 62 +++++ .../repository/ProxySelectorRepository.java | 53 +++++ .../jpa/repository/RegistryRepository.java | 52 +++++ .../jpa/repository/ResourceRepository.java | 34 +++ .../admin/jpa/repository/RoleRepository.java | 53 +++++ .../repository/RuleConditionRepository.java | 29 +++ .../admin/jpa/repository/RuleRepository.java | 79 +++++++ .../repository/ScaleHistoryRepository.java | 29 +++ .../jpa/repository/ScalePolicyRepository.java | 43 ++++ .../jpa/repository/ScaleRuleRepository.java | 43 ++++ .../SelectorConditionRepository.java | 29 +++ .../jpa/repository/SelectorRepository.java | 43 ++++ .../jpa/repository/ShenyuDictRepository.java | 49 ++++ .../jpa/repository/TagRelationRepository.java | 48 ++++ .../admin/jpa/repository/TagRepository.java | 49 ++++ .../jpa/repository/UserRoleRepository.java | 46 ++++ .../apache/shenyu/admin/model/dto/ApiDTO.java | 4 +- .../shenyu/admin/model/dto/AppAuthDTO.java | 8 +- .../shenyu/admin/model/dto/AuthApplyDTO.java | 4 +- .../admin/model/dto/AuthPathWarpDTO.java | 4 +- .../model/dto/BatchNamespaceCommonDTO.java | 4 +- .../shenyu/admin/model/dto/DetailDTO.java | 4 +- .../shenyu/admin/model/dto/DiscoveryDTO.java | 4 +- .../admin/model/dto/DiscoveryUpstreamDTO.java | 8 +- .../shenyu/admin/model/dto/FieldDTO.java | 4 +- .../shenyu/admin/model/dto/MetaDataDTO.java | 8 +- .../admin/model/dto/MockRequestRecordDTO.java | 4 +- .../admin/model/dto/NamespaceSyncDTO.java | 4 +- .../shenyu/admin/model/dto/PluginDTO.java | 4 +- .../admin/model/dto/PluginHandleDTO.java | 4 +- .../admin/model/dto/ProxySelectorAddDTO.java | 8 +- .../admin/model/dto/ProxySelectorDTO.java | 8 +- .../shenyu/admin/model/dto/ResourceDTO.java | 4 +- .../shenyu/admin/model/dto/RoleDTO.java | 4 +- .../shenyu/admin/model/dto/RuleDTO.java | 12 +- .../admin/model/dto/ScalePolicyDTO.java | 4 +- .../shenyu/admin/model/dto/SelectorDTO.java | 12 +- .../shenyu/admin/model/dto/ShenyuDictDTO.java | 4 +- .../apache/shenyu/admin/model/dto/TagDTO.java | 4 +- .../admin/model/dto/TagRelationDTO.java | 4 +- .../admin/model/entity/AlertReceiverDO.java | 23 ++ .../shenyu/admin/model/entity/ApiDO.java | 17 ++ .../admin/model/entity/ApiRuleRelationDO.java | 18 ++ .../shenyu/admin/model/entity/AppAuthDO.java | 6 + .../admin/model/entity/AuthParamDO.java | 6 + .../shenyu/admin/model/entity/AuthPathDO.java | 6 + .../shenyu/admin/model/entity/BaseDO.java | 48 +++- .../admin/model/entity/ClusterMasterDO.java | 18 ++ .../admin/model/entity/DashboardUserDO.java | 8 + .../admin/model/entity/DataPermissionDO.java | 6 + .../shenyu/admin/model/entity/DetailDO.java | 7 + .../admin/model/entity/DiscoveryDO.java | 9 +- .../model/entity/DiscoveryHandlerDO.java | 7 + .../admin/model/entity/DiscoveryRelDO.java | 7 + .../model/entity/DiscoveryUpstreamDO.java | 6 + .../shenyu/admin/model/entity/FieldDO.java | 7 + .../admin/model/entity/InstanceInfoDO.java | 8 + .../shenyu/admin/model/entity/MetaDataDO.java | 7 + .../model/entity/MockRequestRecordDO.java | 7 + .../shenyu/admin/model/entity/ModelDO.java | 7 + .../admin/model/entity/NamespaceDO.java | 7 + .../model/entity/NamespacePluginRelDO.java | 7 + .../model/entity/NamespaceUserRelDO.java | 7 + .../model/entity/OperationRecordLog.java | 8 + .../admin/model/entity/ParameterDO.java | 7 + .../admin/model/entity/PermissionDO.java | 6 + .../shenyu/admin/model/entity/PluginDO.java | 8 + .../admin/model/entity/PluginHandleDO.java | 6 + .../admin/model/entity/ProxyApiKeyDO.java | 7 + .../admin/model/entity/ProxySelectorDO.java | 6 + .../shenyu/admin/model/entity/RegistryDO.java | 7 + .../shenyu/admin/model/entity/ResourceDO.java | 6 + .../shenyu/admin/model/entity/RoleDO.java | 6 + .../admin/model/entity/RuleConditionDO.java | 6 + .../shenyu/admin/model/entity/RuleDO.java | 6 + .../admin/model/entity/ScaleHistoryDO.java | 7 + .../admin/model/entity/ScalePolicyDO.java | 6 + .../admin/model/entity/ScaleRuleDO.java | 6 + .../model/entity/SelectorConditionDO.java | 6 + .../shenyu/admin/model/entity/SelectorDO.java | 6 + .../admin/model/entity/ShenyuDictDO.java | 8 + .../shenyu/admin/model/entity/TagDO.java | 9 + .../admin/model/entity/TagRelationDO.java | 10 + .../shenyu/admin/model/entity/UserRoleDO.java | 6 + .../admin/model/page/PageResultUtils.java | 50 +++++ .../shenyu/admin/model/vo/DetailVO.java | 4 +- .../shenyu/admin/model/vo/DiscoveryVO.java | 4 +- .../shenyu/admin/service/PageService.java | 32 ++- .../impl/AiProxyApiKeyServiceImpl.java | 37 +-- .../impl/AiProxyConnectionServiceImpl.java | 12 +- .../impl/AlertDispatchServiceImpl.java | 18 +- .../impl/AlertReceiverServiceImpl.java | 44 ++-- .../admin/service/impl/ApiServiceImpl.java | 19 +- .../service/impl/AppAuthServiceImpl.java | 74 +++--- .../impl/DashboardUserServiceImpl.java | 37 ++- .../impl/DataPermissionServiceImpl.java | 19 +- .../admin/service/impl/DetailServiceImpl.java | 8 +- .../service/impl/DiscoveryServiceImpl.java | 17 +- .../impl/DiscoveryUpstreamServiceImpl.java | 15 +- .../admin/service/impl/FieldServiceImpl.java | 11 +- .../service/impl/InstanceInfoServiceImpl.java | 10 +- .../service/impl/MetaDataServiceImpl.java | 23 +- .../impl/MockRequestRecordServiceImpl.java | 12 +- .../service/impl/NamespaceServiceImpl.java | 30 +-- .../impl/NamespaceUserServiceImpl.java | 12 +- .../impl/OperationRecordLogServiceImpl.java | 13 +- .../service/impl/PluginHandleServiceImpl.java | 21 +- .../admin/service/impl/PluginServiceImpl.java | 17 +- .../impl/ProxySelectorServiceImpl.java | 15 +- .../service/impl/RegistryServiceImpl.java | 12 +- .../service/impl/ResourceServiceImpl.java | 9 +- .../admin/service/impl/RoleServiceImpl.java | 11 +- .../admin/service/impl/RuleServiceImpl.java | 17 +- .../service/impl/ScalePolicyServiceImpl.java | 9 +- .../service/impl/ScaleRuleServiceImpl.java | 10 +- .../service/impl/SelectorServiceImpl.java | 11 +- .../service/impl/ShenyuDictServiceImpl.java | 23 +- .../service/impl/TagRelationServiceImpl.java | 17 +- .../admin/service/impl/TagServiceImpl.java | 15 +- .../shenyu/admin/transfer/AlertTransfer.java | 1 + .../src/main/resources/application-h2.yml | 2 + .../src/main/resources/application-mysql.yml | 2 + .../src/main/resources/application-ob.yml | 2 + .../src/main/resources/application-og.yml | 2 + .../src/main/resources/application-oracle.yml | 2 + .../src/main/resources/application-pg.yml | 2 + .../src/main/resources/application.yml | 13 ++ .../resources/mappers/app-auth-sqlmap.xml | 2 +- .../admin/controller/ApiControllerTest.java | 8 +- .../controller/AppAuthControllerTest.java | 35 +-- .../controller/MetaDataControllerTest.java | 28 +-- .../controller/PluginControllerTest.java | 18 +- .../PluginHandleControllerTest.java | 8 +- .../admin/controller/RoleControllerTest.java | 14 +- .../admin/controller/RuleControllerTest.java | 52 ++--- .../controller/SelectorControllerTest.java | 52 ++--- .../controller/ShenyuDictControllerTest.java | 12 +- .../jpa/converter/BooleanConverterTest.java | 73 ++++++ .../jpa/converter/ListByteConverterTest.java | 85 +++++++ .../jpa/converter/MapStringConverterTest.java | 91 ++++++++ .../AiProxyApiKeyRepositoryTest.java | 211 ++++++++++++++++++ .../AlertReceiverRepositoryTest.java | 98 ++++++++ .../repository/DiscoveryRepositoryTest.java | 64 ++++++ .../service/AlertDispatchServiceTest.java | 114 +++++----- .../service/AlertReceiverServiceTest.java | 23 +- .../shenyu/admin/service/ApiServiceTest.java | 9 +- .../admin/service/AppAuthServiceTest.java | 41 ++-- .../service/DashboardUserServiceTest.java | 49 ++-- .../service/DataPermissionServiceTest.java | 8 +- .../admin/service/DetailServiceTest.java | 13 +- .../service/DiscoveryUpstreamServiceTest.java | 7 +- .../admin/service/FieldServiceTest.java | 7 +- .../service/InstanceInfoServiceTest.java | 8 +- .../admin/service/MetaDataServiceTest.java | 23 +- .../service/MockRequestRecordServiceTest.java | 8 +- .../admin/service/PermissionServiceTest.java | 6 +- .../service/PluginHandleServiceTest.java | 16 +- .../admin/service/PluginServiceTest.java | 13 +- .../service/ProxySelectorServiceTest.java | 8 +- .../admin/service/ResourceServiceTest.java | 11 +- .../shenyu/admin/service/RoleServiceTest.java | 11 +- .../shenyu/admin/service/RuleServiceTest.java | 16 +- .../admin/service/SelectorServiceTest.java | 14 +- .../admin/service/ShenyuDictServiceTest.java | 12 +- .../admin/service/TagRelationServiceTest.java | 12 +- .../shenyu/admin/service/TagServiceTest.java | 10 +- .../impl/AiProxyApiKeyServiceImplTest.java | 31 ++- .../src/test/resources/application-h2.yml | 2 + .../src/test/resources/application.yml | 13 ++ .../shenyu/alert/model/AlertReceiverDTO.java | 27 ++- 224 files changed, 4353 insertions(+), 657 deletions(-) create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/config/JpaConfiguration.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/BooleanConverter.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/ListByteConverter.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/MapStringConverter.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AiProxyApiKeyRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AlertReceiverRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ApiRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ApiRuleRelationRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AppAuthRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AuthParamRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AuthPathRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ClusterMasterRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DashboardUserRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DataPermissionRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DetailRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryHandlerRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRelRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryUpstreamRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/FieldRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/InstanceInfoRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/MetaDataRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/MockRequestRecordRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ModelRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespacePluginRelRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespaceRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespaceUserRelRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/OperationRecordLogRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ParameterRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PermissionRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PluginHandleRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PluginRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ProxySelectorRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RegistryRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ResourceRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RoleRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RuleConditionRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RuleRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScaleHistoryRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScalePolicyRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScaleRuleRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/SelectorConditionRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/SelectorRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ShenyuDictRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/TagRelationRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/TagRepository.java create mode 100644 shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/UserRoleRepository.java create mode 100644 shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/BooleanConverterTest.java create mode 100644 shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/ListByteConverterTest.java create mode 100644 shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/MapStringConverterTest.java create mode 100644 shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/AiProxyApiKeyRepositoryTest.java create mode 100644 shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/AlertReceiverRepositoryTest.java create mode 100644 shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRepositoryTest.java diff --git a/shenyu-admin/pom.xml b/shenyu-admin/pom.xml index 779ce46cb3bc..675cef4ea725 100644 --- a/shenyu-admin/pom.xml +++ b/shenyu-admin/pom.xml @@ -172,6 +172,11 @@ mybatis-spring-boot-starter + + org.springframework.boot + spring-boot-starter-data-jpa + + com.mysql mysql-connector-j diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/config/JpaConfiguration.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/config/JpaConfiguration.java new file mode 100644 index 000000000000..8246b8ede64d --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/config/JpaConfiguration.java @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; + +@Configuration +@EnableJpaAuditing +public class JpaConfiguration { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AlertReceiverController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AlertReceiverController.java index 6569954b4fb5..c46fa0394505 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AlertReceiverController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AlertReceiverController.java @@ -20,7 +20,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; import org.apache.shenyu.admin.model.query.AlertReceiverQuery; @@ -111,7 +111,7 @@ public ShenyuAdminResult getReceiverDetail(@PathVariable("id") final String id) public ShenyuAdminResult getReceivers(@RequestParam @NotNull final Integer currentPage, @RequestParam @NotNull final Integer pageSize, @Valid @Existed(message = "namespaceId is not existed", - provider = NamespaceMapper.class) final String namespaceId + provider = NamespaceRepository.class) final String namespaceId ) { CommonPager commonPager = alertReceiverService.listByPage(new AlertReceiverQuery(new PageParameter(currentPage, pageSize), namespaceId)); return ShenyuAdminResult.success(commonPager); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ApiController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ApiController.java index a0e8fbb9c2c6..d4e778d9e0fb 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ApiController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ApiController.java @@ -19,7 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.ApiMapper; +import org.apache.shenyu.admin.jpa.repository.ApiRepository; import org.apache.shenyu.admin.model.dto.ApiDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -83,7 +83,7 @@ public ShenyuAdminResult queryApis(final String apiPath, final Integer state, @GetMapping("/{id}") public ShenyuAdminResult detailApi(@PathVariable("id") @Existed(message = "api is not existed", - provider = ApiMapper.class) final String id) { + provider = ApiRepository.class) final String id) { ApiVO apiVO = apiService.findById(id); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, apiVO); } @@ -111,7 +111,7 @@ public ShenyuAdminResult createApi(@Valid @RequestBody final ApiDTO apiDTO) { @RequiresPermissions("system:api:edit") public ShenyuAdminResult updateApi(@PathVariable("id") @Existed(message = "api is not existed", - provider = ApiMapper.class) final String id, + provider = ApiRepository.class) final String id, @Valid @RequestBody final ApiDTO apiDTO) { apiDTO.setId(id); return ShenyuAdminResult.success(apiService.createOrUpdate(apiDTO)); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java index d96d6839c7d0..2ac35988e6cb 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/AppAuthController.java @@ -19,9 +19,9 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.AppAuthMapper; -import org.apache.shenyu.admin.mapper.AuthPathMapper; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.AppAuthRepository; +import org.apache.shenyu.admin.jpa.repository.AuthPathRepository; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.model.dto.AppAuthDTO; import org.apache.shenyu.admin.model.dto.AuthApplyDTO; import org.apache.shenyu.admin.model.dto.AuthPathWarpDTO; @@ -33,7 +33,6 @@ import org.apache.shenyu.admin.model.vo.AppAuthVO; import org.apache.shenyu.admin.service.AppAuthService; import org.apache.shenyu.admin.service.PageService; -import org.apache.shenyu.admin.service.provider.AppKeyProvider; import org.apache.shenyu.admin.utils.ShenyuResultMessage; import org.apache.shenyu.admin.validation.annotation.Existed; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -85,7 +84,7 @@ public ShenyuAdminResult apply(@Valid @RequestBody final AuthApplyDTO authApplyD @GetMapping("/updateSk") public ShenyuAdminResult updateSk(@RequestParam("appKey") @Existed(message = "app key not existed", - provider = AppKeyProvider.class) final String appKey, + provider = AppAuthRepository.class) final String appKey, @RequestParam("appSecret") final String appSecret) { return appAuthService.updateAppSecretByAppKey(appKey, appSecret); } @@ -106,7 +105,7 @@ public ShenyuAdminResult findPageByQuery(final String appKey, final String phone @RequestParam @NotNull(message = "currentPage not null") final Integer currentPage, @RequestParam @NotNull(message = "pageSize not null") final Integer pageSize, @Valid @Existed(message = "namespaceId is not existed", - provider = NamespaceMapper.class) final String namespaceId) { + provider = NamespaceRepository.class) final String namespaceId) { AppAuthQuery query = new AppAuthQuery(); query.setPhone(phone); query.setAppKey(appKey); @@ -126,7 +125,7 @@ public ShenyuAdminResult findPageByQuery(final String appKey, final String phone @RequiresPermissions("system:authen:editResourceDetails") public ShenyuAdminResult detail(@RequestParam("id") @Existed(message = "app key not existed", - provider = AppAuthMapper.class) final String id) { + provider = AppAuthRepository.class) final String id) { return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, appAuthService.findById(id)); } @@ -152,8 +151,8 @@ public ShenyuAdminResult updateDetail(@RequestBody @Valid final AppAuthDTO appAu @RequiresPermissions("system:authen:editResourceDetails") public ShenyuAdminResult detailPath(@RequestParam("id") @Existed(message = "auth path not existed", - providerMethodName = "existedByAuthId", - provider = AuthPathMapper.class) + providerMethodName = "existsByAuthId", + provider = AuthPathRepository.class) @NotBlank final String authId) { return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, appAuthService.detailPath(authId)); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java index e5c5b429de1a..f14c5e2af438 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DashboardUserController.java @@ -21,7 +21,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.RestApi; import org.apache.shenyu.admin.exception.ValidFailException; -import org.apache.shenyu.admin.mapper.DashboardUserMapper; +import org.apache.shenyu.admin.jpa.repository.DashboardUserRepository; import org.apache.shenyu.admin.model.custom.UserInfo; import org.apache.shenyu.admin.model.dto.DashboardUserDTO; import org.apache.shenyu.admin.model.dto.DashboardUserModifyPasswordDTO; @@ -136,7 +136,7 @@ public ShenyuAdminResult createDashboardUser(@Valid @RequestBody final Dashboard @PutMapping("/{id}") @RequiresPermissions("system:manager:edit") public ShenyuAdminResult updateDashboardUser(@PathVariable("id") - @Existed(provider = DashboardUserMapper.class, + @Existed(provider = DashboardUserRepository.class, message = "user is not found") final String id, @Valid @RequestBody final DashboardUserDTO dashboardUserDTO) { dashboardUserDTO.setId(id); @@ -156,7 +156,7 @@ public ShenyuAdminResult updateDashboardUser(@PathVariable("id") */ @PutMapping("/modify-password/{id}") public ShenyuAdminResult modifyPassword(@PathVariable("id") - @Existed(provider = DashboardUserMapper.class, + @Existed(provider = DashboardUserRepository.class, message = "user is not found") final String id, @Valid @RequestBody final DashboardUserModifyPasswordDTO dashboardUserModifyPasswordDTO) { UserInfo userInfo = (UserInfo) SecurityUtils.getSubject().getPrincipal(); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DataPermissionController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DataPermissionController.java index 6a169e6b3269..d469a34efbe9 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DataPermissionController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DataPermissionController.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.model.dto.DataPermissionDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -68,7 +68,7 @@ public ShenyuAdminResult listPageSelectorDataPermissions(@RequestParam("currentP @RequestParam("pluginId") final String pluginId, @RequestParam(value = "name", required = false) final String name, @Valid @Existed(message = "namespaceId is not existed", - provider = NamespaceMapper.class) final String namespaceId) { + provider = NamespaceRepository.class) final String namespaceId) { CommonPager selectorList = dataPermissionService.listSelectorsByPage( new SelectorQuery(pluginId, name, new PageParameter(currentPage, pageSize), namespaceId), userId); return ShenyuAdminResult.success(ShenyuResultMessage.QUERY_SUCCESS, selectorList); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DiscoveryUpstreamController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DiscoveryUpstreamController.java index 78a0dd4fd747..1c95b600ba3b 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DiscoveryUpstreamController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/DiscoveryUpstreamController.java @@ -19,7 +19,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.DiscoveryHandlerMapper; +import org.apache.shenyu.admin.jpa.repository.DiscoveryHandlerRepository; import org.apache.shenyu.admin.model.dto.DiscoveryUpstreamDTO; import org.apache.shenyu.admin.model.result.ShenyuAdminResult; import org.apache.shenyu.admin.service.DiscoveryUpstreamService; @@ -83,7 +83,7 @@ public ShenyuAdminResult createDiscoveryUpstreamList(@Valid @RequestBody final L @PutMapping("/{discoveryHandlerId}") public ShenyuAdminResult updateDiscoveryUpstream(@PathVariable("discoveryHandlerId") @Existed(message = "discovery upstream is not existed", - provider = DiscoveryHandlerMapper.class) final String discoveryHandlerId, + provider = DiscoveryHandlerRepository.class) final String discoveryHandlerId, @Valid @RequestBody final List discoveryUpstreamDTO) { return ShenyuAdminResult.success(discoveryUpstreamService.updateBatch(discoveryHandlerId, discoveryUpstreamDTO)); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/MetaDataController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/MetaDataController.java index 2ac88743e690..9b45a566482f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/MetaDataController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/MetaDataController.java @@ -21,7 +21,7 @@ import jakarta.validation.constraints.NotNull; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.BatchNamespaceCommonDTO; import org.apache.shenyu.admin.model.dto.MetaDataDTO; @@ -69,7 +69,7 @@ public ShenyuAdminResult queryList(final String path, @RequestParam @NotNull(message = "currentPage not null") final Integer currentPage, @RequestParam @NotNull(message = "pageSize not null") final Integer pageSize, @Valid @Existed(message = "namespaceId is not existed", - provider = NamespaceMapper.class) final String namespaceId) { + provider = NamespaceRepository.class) final String namespaceId) { CommonPager commonPager = metaDataService.listByPage(new MetaDataQuery(path, new PageParameter(currentPage, pageSize), namespaceId)); return ShenyuAdminResult.success(ShenyuResultMessage.QUERY_SUCCESS, commonPager); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/MockRequestRecordController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/MockRequestRecordController.java index 129295776180..1805959e3e04 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/MockRequestRecordController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/MockRequestRecordController.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.MockRequestRecordMapper; +import org.apache.shenyu.admin.jpa.repository.MockRequestRecordRepository; import org.apache.shenyu.admin.model.dto.MockRequestRecordDTO; import org.apache.shenyu.admin.model.page.PageParameter; import org.apache.shenyu.admin.model.query.MockRequestRecordQuery; @@ -79,7 +79,7 @@ public ShenyuAdminResult batchDelete(@RequestBody @NotEmpty final List<@NotBlank * @return {@linkplain ShenyuAdminResult} */ @DeleteMapping("/{id}") - public ShenyuAdminResult delete(@PathVariable @Valid @Existed(provider = MockRequestRecordMapper.class, + public ShenyuAdminResult delete(@PathVariable @Valid @Existed(provider = MockRequestRecordRepository.class, message = " is not existed") final String id) { return ShenyuAdminResult.success(ShenyuResultMessage.DELETE_SUCCESS, mockRequestRecordService.delete(id)); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/NamespaceController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/NamespaceController.java index e2930d0b7f27..94825dfa257f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/NamespaceController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/NamespaceController.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.model.dto.NamespaceDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -117,7 +117,7 @@ public ShenyuAdminResult delete(@RequestBody final List<@NotBlank String> ids) { @RequiresPermissions("system:namespace:edit") public ShenyuAdminResult detailPlugin(@PathVariable("id") @Existed(message = "namespaceId is not existed", - provider = NamespaceMapper.class) final String namespaceId) { + provider = NamespaceRepository.class) final String namespaceId) { NamespaceVO namespaceVO = namespaceService.findByNamespaceId(namespaceId); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, namespaceVO); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/NamespacePluginController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/NamespacePluginController.java index aba4a2eda4da..e3c3ef7caab6 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/NamespacePluginController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/NamespacePluginController.java @@ -21,9 +21,9 @@ import jakarta.validation.constraints.NotNull; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.NamespaceMapper; -import org.apache.shenyu.admin.mapper.NamespacePluginRelMapper; -import org.apache.shenyu.admin.mapper.PluginMapper; +import org.apache.shenyu.admin.jpa.repository.NamespacePluginRelRepository; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; +import org.apache.shenyu.admin.jpa.repository.PluginRepository; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.BatchNamespaceCommonDTO; import org.apache.shenyu.admin.model.dto.NamespacePluginDTO; @@ -81,7 +81,7 @@ public NamespacePluginController(final NamespacePluginService namespacePluginSer public ShenyuAdminResult queryPlugins(@RequestParam(name = "name", required = false) final String name, @RequestParam(name = "enabled", required = false) final Integer enabled, @Existed(message = "namespace is not existed", - provider = NamespaceMapper.class) + provider = NamespaceRepository.class) @RequestParam(name = "namespaceId") final String namespaceId, @NotNull @RequestParam(name = "currentPage") final Integer currentPage, @NotNull @RequestParam(name = "pageSize") final Integer pageSize) { @@ -96,7 +96,7 @@ public ShenyuAdminResult queryPlugins(@RequestParam(name = "name", required = fa * @return {@linkplain ShenyuAdminResult} */ @GetMapping("/all/{namespaceId}") - public ShenyuAdminResult queryAllNamespacePlugins(@Existed(message = "namespace is not existed", provider = NamespaceMapper.class) + public ShenyuAdminResult queryAllNamespacePlugins(@Existed(message = "namespace is not existed", provider = NamespaceRepository.class) @PathVariable("namespaceId") final String namespaceId) { List pluginDataList = namespacePluginService.listAll(namespaceId); return ShenyuAdminResult.success(ShenyuResultMessage.QUERY_SUCCESS, pluginDataList); @@ -110,7 +110,7 @@ public ShenyuAdminResult queryAllNamespacePlugins(@Existed(message = "namespace */ @GetMapping("/{id}") @RequiresPermissions("system:plugin:edit") - public ShenyuAdminResult detailNamespacePlugin(@Existed(message = "namespace plugin relation is not exist", provider = NamespacePluginRelMapper.class) + public ShenyuAdminResult detailNamespacePlugin(@Existed(message = "namespace plugin relation is not exist", provider = NamespacePluginRelRepository.class) @PathVariable("id") final String id) { NamespacePluginVO namespacePluginVO = namespacePluginService.findById(id); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, namespacePluginVO); @@ -125,7 +125,7 @@ public ShenyuAdminResult detailNamespacePlugin(@Existed(message = "namespace plu */ @PutMapping("/{id}") @RequiresPermissions("system:plugin:edit") - public ShenyuAdminResult updatePlugin(@Existed(message = "namespace plugin relation is not exist", provider = NamespacePluginRelMapper.class) + public ShenyuAdminResult updatePlugin(@Existed(message = "namespace plugin relation is not exist", provider = NamespacePluginRelRepository.class) @PathVariable("id") final String id, @Valid @RequestBody final NamespacePluginDTO namespacePluginDTO) { namespacePluginDTO.setId(id); @@ -141,9 +141,9 @@ public ShenyuAdminResult updatePlugin(@Existed(message = "namespace plugin relat */ @PostMapping("/{namespaceId}/{pluginId}") @RequiresPermissions("system:plugin:edit") - public ShenyuAdminResult generateNamespacePlugin(@Existed(message = "namespace is not exist", provider = NamespaceMapper.class) + public ShenyuAdminResult generateNamespacePlugin(@Existed(message = "namespace is not exist", provider = NamespaceRepository.class) @PathVariable("namespaceId") final String namespaceId, - @Existed(message = "plugin is not exist", provider = PluginMapper.class) + @Existed(message = "plugin is not exist", provider = PluginRepository.class) @PathVariable("pluginId") final String pluginId) { return ShenyuAdminResult.success(namespacePluginService.create(namespaceId, pluginId)); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java index ab6e5e47872a..10e118a56c20 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java @@ -17,9 +17,13 @@ package org.apache.shenyu.admin.controller; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.PluginMapper; +import org.apache.shenyu.admin.jpa.repository.PluginRepository; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.PluginDTO; import org.apache.shenyu.admin.model.page.CommonPager; @@ -42,10 +46,6 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; import java.util.List; /** @@ -99,7 +99,7 @@ public ShenyuAdminResult queryAllPlugins() { @RequiresPermissions("system:plugin:edit") public ShenyuAdminResult detailPlugin(@PathVariable("id") @Existed(message = "plugin is not existed", - provider = PluginMapper.class) final String id) { + provider = PluginRepository.class) final String id) { PluginVO pluginVO = pluginService.findById(id); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, pluginVO); } @@ -128,7 +128,7 @@ public ShenyuAdminResult createPlugin(@Valid @ModelAttribute final PluginDTO plu @RequiresPermissions("system:plugin:edit") public ShenyuAdminResult updatePlugin(@PathVariable("id") @Existed(message = "plugin is not existed", - provider = PluginMapper.class) final String id, + provider = PluginRepository.class) final String id, @Valid @ModelAttribute final PluginDTO pluginDTO) { pluginDTO.setId(id); return createPlugin(pluginDTO); @@ -145,7 +145,7 @@ public ShenyuAdminResult updatePlugin(@PathVariable("id") @RequiresPermissions("system:plugin:resource") public ShenyuAdminResult createPluginResource(@PathVariable("id") @Existed(message = "plugin is not existed", - provider = PluginMapper.class) final String id, + provider = PluginRepository.class) final String id, @Valid @RequestBody final PluginDTO pluginDTO) { pluginDTO.setId(id); return ShenyuAdminResult.success(pluginService.createPluginResource(pluginDTO)); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginHandleController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginHandleController.java index 4555934b5d0e..073888f5ab72 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginHandleController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginHandleController.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.PluginHandleMapper; +import org.apache.shenyu.admin.jpa.repository.PluginHandleRepository; import org.apache.shenyu.admin.model.dto.PluginHandleDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -94,7 +94,7 @@ public ShenyuAdminResult queryAllPluginHandlesByPluginId(@PathVariable("pluginId @GetMapping("/{id}") @RequiresPermissions("system:pluginHandler:edit") public ShenyuAdminResult detailRule(@PathVariable("id") @Valid - @Existed(provider = PluginHandleMapper.class, + @Existed(provider = PluginHandleRepository.class, message = "rule not exited") final String id) { PluginHandleVO pluginHandleVO = pluginHandleService.findById(id); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, pluginHandleVO); @@ -123,7 +123,7 @@ public ShenyuAdminResult createPluginHandle(@Valid @RequestBody final PluginHand @PutMapping("/{id}") @RequiresPermissions("system:pluginHandler:edit") public ShenyuAdminResult updatePluginHandle(@PathVariable("id") @Valid - @Existed(provider = PluginHandleMapper.class, + @Existed(provider = PluginHandleRepository.class, message = "rule not exited") final String id, @Valid @RequestBody final PluginHandleDTO pluginHandleDTO) { pluginHandleDTO.setId(id); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ProxySelectorController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ProxySelectorController.java index 26429a306ab6..09df7bae644b 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ProxySelectorController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ProxySelectorController.java @@ -17,8 +17,12 @@ package org.apache.shenyu.admin.controller; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.model.dto.ProxySelectorAddDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -35,10 +39,6 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; import java.util.List; @RestApi("/proxy-selector") @@ -64,7 +64,7 @@ public ProxySelectorController(final ProxySelectorService proxySelectorService) public ShenyuAdminResult queryProxySelector(final String name, @NotNull final Integer currentPage, @NotNull final Integer pageSize, @Existed(message = "namespace is not existed", - provider = NamespaceMapper.class) final String namespaceId) { + provider = NamespaceRepository.class) final String namespaceId) { CommonPager commonPager = proxySelectorService .listByPage(new ProxySelectorQuery(name, new PageParameter(currentPage, pageSize), namespaceId)); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RegistryController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RegistryController.java index 74e9340c1ded..1bf9dac0b280 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RegistryController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RegistryController.java @@ -21,7 +21,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.RegistryMapper; +import org.apache.shenyu.admin.jpa.repository.RegistryRepository; import org.apache.shenyu.admin.model.dto.RegistryDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -121,7 +121,7 @@ public ShenyuAdminResult delete(@RequestBody final List<@NotBlank String> ids) { @RequiresPermissions("system:registry:edit") public ShenyuAdminResult detailPlugin(@PathVariable("id") @Existed(message = "id is not existed", - provider = RegistryMapper.class) final String id) { + provider = RegistryRepository.class) final String id) { RegistryVO registryVO = registryService.findById(id); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, registryVO); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ResourceController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ResourceController.java index 187512141860..d6e938df477e 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ResourceController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ResourceController.java @@ -19,7 +19,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.ResourceMapper; +import org.apache.shenyu.admin.jpa.repository.ResourceRepository; import org.apache.shenyu.admin.model.dto.CreateResourceDTO; import org.apache.shenyu.admin.model.dto.ResourceDTO; import org.apache.shenyu.admin.model.page.CommonPager; @@ -147,7 +147,7 @@ public ShenyuAdminResult createResource(@Valid @RequestBody final CreateResource @PutMapping("/{id}") @RequiresPermissions(value = {"system:resource:editMenu", "system:resource:editButton"}, logical = Logical.OR) public ShenyuAdminResult updateResource(@PathVariable("id") @Valid - @Existed(provider = ResourceMapper.class, + @Existed(provider = ResourceRepository.class, message = "resource not existed") final String id, @RequestBody final ResourceDTO resourceDTO) { resourceDTO.setId(id); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RoleController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RoleController.java index 5797c6f4e545..5691fd58516f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RoleController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RoleController.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.RoleMapper; +import org.apache.shenyu.admin.jpa.repository.RoleRepository; import org.apache.shenyu.admin.model.dto.RoleDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -96,7 +96,7 @@ public ShenyuAdminResult queryRole(final String roleName, @GetMapping("/{id}") @RequiresPermissions("system:role:edit") public ShenyuAdminResult detailRole(@PathVariable("id") @Valid - @Existed(provider = RoleMapper.class, + @Existed(provider = RoleRepository.class, message = "role is not existed") final String id) { RoleEditVO roleEditVO = roleService.findById(id); return Optional.ofNullable(roleEditVO) @@ -129,7 +129,7 @@ public ShenyuAdminResult createRole(@Valid @RequestBody final RoleDTO roleDTO) { @PutMapping("/{id}") @RequiresPermissions("system:role:edit") public ShenyuAdminResult updateRole(@PathVariable("id") @Valid - @Existed(provider = RoleMapper.class, + @Existed(provider = RoleRepository.class, message = "role is not existed") final String id, @Valid @RequestBody final RoleDTO roleDTO) { roleDTO.setId(id); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RuleController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RuleController.java index d6dcbe969aa6..74c0fcce4548 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RuleController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RuleController.java @@ -20,8 +20,8 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.NamespaceMapper; -import org.apache.shenyu.admin.mapper.RuleMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; +import org.apache.shenyu.admin.jpa.repository.RuleRepository; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.BatchNamespaceCommonDTO; import org.apache.shenyu.admin.model.dto.RuleDTO; @@ -72,7 +72,7 @@ public AdminResult> queryRules(final String selectorId, fina @RequestParam @NotNull final Integer currentPage, @RequestParam @NotNull final Integer pageSize, @Valid @Existed(message = "namespaceId is not existed", - provider = NamespaceMapper.class) final String namespaceId) { + provider = NamespaceRepository.class) final String namespaceId) { final RuleQueryCondition condition = new RuleQueryCondition(); condition.setUserId(SessionUtil.visitor().getUserId()); condition.setSelectors(ListUtil.of(selectorId)); @@ -89,7 +89,7 @@ public AdminResult> queryRules(final String selectorId, fina */ @GetMapping("/{id}") public ShenyuAdminResult detailRule(@Valid @PathVariable("id") - @Existed(provider = RuleMapper.class, message = "rule is not existed") final String id) { + @Existed(provider = RuleRepository.class, message = "rule is not existed") final String id) { RuleVO ruleVO = ruleService.findById(id); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, ruleVO); } @@ -115,7 +115,7 @@ public ShenyuAdminResult createRule(@Valid @RequestBody final RuleDTO ruleDTO) { */ @PutMapping("/{id}") public ShenyuAdminResult updateRule(@PathVariable("id") @Valid - @Existed(provider = RuleMapper.class, + @Existed(provider = RuleRepository.class, message = "rule is not existed") final String id, @Valid @RequestBody final RuleDTO ruleDTO) { ruleDTO.setId(id); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ScalePolicyController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ScalePolicyController.java index 46dce27b3424..08277520b6f7 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ScalePolicyController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ScalePolicyController.java @@ -19,7 +19,7 @@ import jakarta.validation.Valid; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.ScalePolicyMapper; +import org.apache.shenyu.admin.jpa.repository.ScalePolicyRepository; import org.apache.shenyu.admin.model.dto.ScalePolicyDTO; import org.apache.shenyu.admin.model.result.ShenyuAdminResult; import org.apache.shenyu.admin.model.vo.ScalePolicyVO; @@ -64,7 +64,7 @@ public ShenyuAdminResult selectAll() { @GetMapping("/{id}") public ShenyuAdminResult detailPolicy(@PathVariable("id") @Valid - @Existed(provider = ScalePolicyMapper.class, + @Existed(provider = ScalePolicyRepository.class, message = "scale policy is not existed") final String id) { ScalePolicyVO scalePolicyVO = scalePolicyService.findById(id); return Optional.ofNullable(scalePolicyVO) diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ScaleRlueController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ScaleRlueController.java index 6ff48a840d82..42890394ab14 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ScaleRlueController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ScaleRlueController.java @@ -23,7 +23,7 @@ import jakarta.validation.constraints.NotNull; import org.apache.shenyu.admin.aspect.annotation.RestApi; import org.apache.shenyu.admin.exception.ShenyuAdminException; -import org.apache.shenyu.admin.mapper.ScaleRuleMapper; +import org.apache.shenyu.admin.jpa.repository.ScaleRuleRepository; import org.apache.shenyu.admin.model.dto.ScaleRuleDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -52,11 +52,11 @@ public class ScaleRlueController { private final ScaleRuleService scaleRuleService; - private final ScaleRuleMapper scaleRuleMapper; + private final ScaleRuleRepository scaleRuleRepository; - public ScaleRlueController(final ScaleRuleService scaleRuleService, final ScaleRuleMapper scaleRuleMapper) { + public ScaleRlueController(final ScaleRuleService scaleRuleService, final ScaleRuleRepository scaleRuleRepository) { this.scaleRuleService = scaleRuleService; - this.scaleRuleMapper = scaleRuleMapper; + this.scaleRuleRepository = scaleRuleRepository; } /** @@ -99,7 +99,7 @@ public ShenyuAdminResult queryRule(final String metricName, @GetMapping("/{id}") public ShenyuAdminResult detailRule(@PathVariable("id") @Valid - @Existed(provider = ScaleRuleMapper.class, + @Existed(provider = ScaleRuleRepository.class, message = "scale role is not existed") final String id) { ScaleRuleVO scaleRuleVO = scaleRuleService.findById(id); return Optional.ofNullable(scaleRuleVO) @@ -126,7 +126,7 @@ public ShenyuAdminResult createRule(@Valid @RequestBody final ScaleRuleDTO scale */ @PutMapping public ShenyuAdminResult updateRule(@Valid @RequestBody final ScaleRuleDTO scaleRuleDTO) { - if (!scaleRuleMapper.existed(scaleRuleDTO.getId())) { + if (!scaleRuleRepository.existed(scaleRuleDTO.getId())) { throw new ShenyuAdminException("scale rule is not existed"); } return ShenyuAdminResult.success(ShenyuResultMessage.UPDATE_SUCCESS, scaleRuleService.createOrUpdate(scaleRuleDTO)); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/SelectorController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/SelectorController.java index ea82bd2e1376..d7d7e51df2e0 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/SelectorController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/SelectorController.java @@ -20,7 +20,7 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.SelectorMapper; +import org.apache.shenyu.admin.jpa.repository.SelectorRepository; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.BatchNamespaceCommonDTO; import org.apache.shenyu.admin.model.dto.SelectorDTO; @@ -92,7 +92,7 @@ public AdminResult> querySelectors(final String pluginId */ @GetMapping("/{id}") public ShenyuAdminResult detailSelector(@PathVariable("id") @Valid - @Existed(provider = SelectorMapper.class, message = "selector is not existed") final String id) { + @Existed(provider = SelectorRepository.class, message = "selector is not existed") final String id) { SelectorVO selectorVO = selectorService.findById(id); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, selectorVO); } @@ -118,7 +118,7 @@ public ShenyuAdminResult createSelector(@Valid @RequestBody final SelectorDTO se */ @PutMapping("/{id}") public ShenyuAdminResult updateSelector(@PathVariable("id") @Valid - @Existed(provider = SelectorMapper.class, message = "selector is not existed") final String id, + @Existed(provider = SelectorRepository.class, message = "selector is not existed") final String id, @Valid @RequestBody final SelectorDTO selectorDTO) { selectorDTO.setId(id); Integer updateCount = selectorService.createOrUpdate(selectorDTO); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ShenyuDictController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ShenyuDictController.java index 50fcea9376f9..faa598a4cbcb 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ShenyuDictController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ShenyuDictController.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.ShenyuDictMapper; +import org.apache.shenyu.admin.jpa.repository.ShenyuDictRepository; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.ShenyuDictDTO; import org.apache.shenyu.admin.model.page.PageParameter; @@ -94,7 +94,7 @@ public ShenyuAdminResult findByType(@PathVariable("type") final String type) { @GetMapping("/{id}") @RequiresPermissions("system:dict:edit") public ShenyuAdminResult detail(@PathVariable("id") @Valid - @Existed(provider = ShenyuDictMapper.class, + @Existed(provider = ShenyuDictRepository.class, message = "dict is not existed") final String id) { return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, shenyuDictService.findById(id)); } @@ -121,7 +121,7 @@ public ShenyuAdminResult createShenyuDict(@Valid @RequestBody final ShenyuDictDT @PutMapping("/{id}") @RequiresPermissions("system:dict:edit") public ShenyuAdminResult updateShenyuDict(@PathVariable("id") @Valid - @Existed(provider = ShenyuDictMapper.class, + @Existed(provider = ShenyuDictRepository.class, message = "dict is not existed") final String id, @Valid @NotNull @RequestBody final ShenyuDictDTO shenyuDictDTO) { shenyuDictDTO.setId(id); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/TagController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/TagController.java index 2eeab0339768..542441c78027 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/TagController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/TagController.java @@ -19,7 +19,7 @@ import com.google.common.collect.Lists; import org.apache.shenyu.admin.aspect.annotation.RestApi; -import org.apache.shenyu.admin.mapper.TagMapper; +import org.apache.shenyu.admin.jpa.repository.TagRepository; import org.apache.shenyu.admin.model.dto.TagDTO; import org.apache.shenyu.admin.model.result.ShenyuAdminResult; import org.apache.shenyu.admin.model.vo.TagVO; @@ -77,7 +77,7 @@ public ShenyuAdminResult queryRootTag() { */ @GetMapping("/id/{id}") public ShenyuAdminResult queryById(@PathVariable("id") @Valid - @Existed(provider = TagMapper.class, + @Existed(provider = TagRepository.class, message = "tag is not existed") final String id) { TagVO tagVO = tagService.findById(id); return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS, tagVO); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/BooleanConverter.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/BooleanConverter.java new file mode 100644 index 000000000000..5eca43c15802 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/BooleanConverter.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.converter; + +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; + +import java.util.Objects; + +@Converter(autoApply = true) +public class BooleanConverter implements AttributeConverter { + + @Override + public Integer convertToDatabaseColumn(final Boolean attribute) { + if (Objects.isNull(attribute)) { + return null; + } + return attribute ? 1 : 0; + } + + @Override + public Boolean convertToEntityAttribute(final Integer dbData) { + if (Objects.isNull(dbData)) { + return null; + } + return dbData.equals(1); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/ListByteConverter.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/ListByteConverter.java new file mode 100644 index 000000000000..41626f8d6881 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/ListByteConverter.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.converter; + +import com.google.gson.reflect.TypeToken; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; +import org.apache.shenyu.common.utils.GsonUtils; + +import java.util.List; +import java.util.Objects; + + +@Converter +public class ListByteConverter implements AttributeConverter, String> { + + @Override + public String convertToDatabaseColumn(final List attribute) { + return Objects.isNull(attribute) ? null : GsonUtils.getGson().toJson(attribute); + } + + @Override + public List convertToEntityAttribute(final String dbData) { + return Objects.isNull(dbData) ? null : GsonUtils.getGson().fromJson(dbData, new TypeToken>() { + }.getType()); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/MapStringConverter.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/MapStringConverter.java new file mode 100644 index 000000000000..87150eecb365 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/converter/MapStringConverter.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.converter; + +import com.google.gson.reflect.TypeToken; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; +import org.apache.shenyu.common.utils.GsonUtils; + +import java.util.Map; +import java.util.Objects; + +@Converter +public class MapStringConverter implements AttributeConverter, String> { + + @Override + public String convertToDatabaseColumn(final Map attribute) { + return Objects.isNull(attribute) ? null : GsonUtils.getGson().toJson(attribute); + } + + @Override + public Map convertToEntityAttribute(final String dbData) { + return Objects.isNull(dbData) ? null : GsonUtils.getGson().fromJson(dbData, new TypeToken>() { + }.getType()); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AiProxyApiKeyRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AiProxyApiKeyRepository.java new file mode 100644 index 000000000000..f2c8fc2e5631 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AiProxyApiKeyRepository.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ProxyApiKeyDO; +import org.apache.shenyu.admin.model.query.ProxyApiKeyQuery; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + * AiProxyApiKeyRepository. + */ +@Repository +public interface AiProxyApiKeyRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + boolean existsBySelectorIdAndProxyApiKey(@Param("selectorId") String selectorId, @Param("proxyApiKey") String proxyApiKey); + + List findBySelectorId(@Param("selectorId") String selectorId); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE ProxyApiKeyDO p SET p.enabled = :enabled, p.dateUpdated = CURRENT_TIMESTAMP WHERE p.id IN :ids + """) + int updateEnableBatch(@Param("ids") List ids, @Param("enabled") Boolean enabled); + + + @Query(""" + SELECT p + FROM ProxyApiKeyDO p + WHERE (:#{#query.proxyApiKey} IS NULL OR :#{#query.proxyApiKey} = '' OR p.proxyApiKey = :#{#query.proxyApiKey}) + AND coalesce(:#{#query.enabled}, p.enabled) = p.enabled + AND (:#{#query.namespaceId} IS NULL OR :#{#query.namespaceId} = '' OR p.namespaceId = :#{#query.namespaceId}) + AND (:#{#query.selectorId} IS NULL OR :#{#query.selectorId} = '' OR p.selectorId = :#{#query.selectorId}) + ORDER BY p.dateUpdated DESC + """) + Page pageByCondition(@Param("query") ProxyApiKeyQuery query, Pageable pageable); + + default List selectByCondition(ProxyApiKeyQuery query) { + return pageByCondition(query, Pageable.unpaged()).getContent(); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AlertReceiverRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AlertReceiverRepository.java new file mode 100644 index 000000000000..6f047925bfa4 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AlertReceiverRepository.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.AlertReceiverDO; +import org.apache.shenyu.admin.model.query.AlertReceiverQuery; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +@Repository +public interface AlertReceiverRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + @Query(""" + SELECT ar FROM AlertReceiverDO ar WHERE + COALESCE(:#{#query.namespaceId}, ar.namespaceId) = ar.namespaceId""") + Page pageByDynamicConditions(@Param("query") AlertReceiverQuery query, Pageable pageable); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ApiRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ApiRepository.java new file mode 100644 index 000000000000..16501899d6ae --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ApiRepository.java @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ApiDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +@Repository +public interface ApiRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE ApiDO a SET + a.contextPath = COALESCE(:#{#entity.contextPath}, a.contextPath), + a.apiPath = COALESCE(:#{#entity.apiPath}, a.apiPath), + a.httpMethod = COALESCE(:#{#entity.httpMethod}, a.httpMethod), + a.consume = COALESCE(:#{#entity.consume}, a.consume), + a.produce = COALESCE(:#{#entity.produce}, a.produce), + a.version = COALESCE(:#{#entity.version}, a.version), + a.rpcType = COALESCE(:#{#entity.rpcType}, a.rpcType), + a.state = COALESCE(:#{#entity.state}, a.state), + a.ext = COALESCE(:#{#entity.ext}, a.ext), + a.apiOwner = COALESCE(:#{#entity.apiOwner}, a.apiOwner), + a.apiDesc = COALESCE(:#{#entity.apiDesc}, a.apiDesc), + a.apiSource = COALESCE(:#{#entity.apiSource}, a.apiSource), + a.document = COALESCE(:#{#entity.document}, a.document), + a.documentMd5 = COALESCE(:#{#entity.documentMd5}, a.documentMd5), + a.dateUpdated = CURRENT_TIMESTAMP + WHERE a.id = :#{#entity.id} + """) + int updateSelective(ApiDO entity); + + /** + * updateOfflineByContextPath. + * @param contextPath context path + */ + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query("UPDATE ApiDO a SET a.state = 2, a.dateUpdated = CURRENT_TIMESTAMP WHERE a.contextPath = :contextPath") + void updateOfflineByContextPath(@Param("contextPath") String contextPath); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ApiRuleRelationRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ApiRuleRelationRepository.java new file mode 100644 index 000000000000..add40fbb2535 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ApiRuleRelationRepository.java @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ApiRuleRelationDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ApiRuleRelationRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AppAuthRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AppAuthRepository.java new file mode 100644 index 000000000000..a8df7c0f9134 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AppAuthRepository.java @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.AppAuthDO; +import org.apache.shenyu.admin.model.query.AppAuthQuery; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; +import java.util.Optional; + +@Repository +public interface AppAuthRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + @Query(""" + SELECT a + FROM AppAuthDO a + WHERE (:#{#query.appKey} IS NULL OR :#{#query.appKey} = '' OR a.appKey = :#{#query.appKey}) + AND (:#{#query.phone} IS NULL OR :#{#query.phone} = '' OR a.phone = :#{#query.phone}) + """) + Page selectByQuery(@Param("query") AppAuthQuery query, Pageable pageable); + + Optional findByAppKey(String appKey); + + List findByNamespaceId(String namespaceId); + + List findByNamespaceIdIn(Collection namespaceIds); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE AppAuthDO a SET a.enabled = :enabled, a.dateUpdated = CURRENT_TIMESTAMP WHERE a.id IN :ids + """) + void updateEnableBatch(@Param("ids") List ids, @Param("enabled") Boolean enabled); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE AppAuthDO a SET a.open = :open, a.dateUpdated = CURRENT_TIMESTAMP WHERE a.id IN :ids + """) + void updateOpenBatch(@Param("ids") List ids, @Param("open") Boolean open); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE AppAuthDO a SET a.appSecret = :appSecret, a.dateUpdated = CURRENT_TIMESTAMP WHERE a.appKey = :appKey + """) + int updateAppSecretByAppKey(@Param("appKey") String appKey, @Param("appSecret") String appSecret); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AuthParamRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AuthParamRepository.java new file mode 100644 index 000000000000..9038f913aa34 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AuthParamRepository.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.AuthParamDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * AuthParamRepository. + */ +@Repository +public interface AuthParamRepository extends JpaRepository { + + /** + * Find by auth id. + * + * @param authId the auth id + * @return list of {@linkplain AuthParamDO} + */ + List findByAuthId(String authId); + + /** + * Find by auth id list. + * + * @param authIdList the auth id list + * @return list of {@linkplain AuthParamDO} + */ + List findByAuthIdIn(List authIdList); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AuthPathRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AuthPathRepository.java new file mode 100644 index 000000000000..e1540eeb9e0f --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/AuthPathRepository.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.AuthPathDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + * The interface Auth path repository. + */ +@Repository +public interface AuthPathRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + /** + * Check if exists by auth id. + * + * @param authId the auth id + * @return true if exists + */ + boolean existsByAuthId(String authId); + + /** + * Find by auth id. + * + * @param authId the auth id + * @return the list + */ + List findByAuthId(String authId); + + /** + * Find by auth id list. + * + * @param authIdList the auth id list + * @return the list + */ + List findByAuthIdIn(@Param("authIdList") List authIdList); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ClusterMasterRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ClusterMasterRepository.java new file mode 100644 index 000000000000..cffc87d55f43 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ClusterMasterRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ClusterMasterDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * ClusterMasterRepository. + */ +@Repository +public interface ClusterMasterRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DashboardUserRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DashboardUserRepository.java new file mode 100644 index 000000000000..cce02d90d51b --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DashboardUserRepository.java @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.DashboardUserDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; +import java.util.Optional; + +/** + * The interface Dashboard user repository. + */ +@Repository +public interface DashboardUserRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + /** + * Find by user name. + * + * @param userName the user name + * @return the optional + */ + Optional findByUserName(String userName); + + /** + * Find by user name and password. + * + * @param userName the user name + * @param password the password + * @return the optional + */ + Optional findByUserNameAndPassword(String userName, String password); + + /** + * Find by id in. + * + * @param ids the ids + * @return the list + */ + List findByIdIn(Collection ids); + + /** + * Find by query. + * + * @param userName the user name + * @param pageable the pageable + * @return the page + */ + @Query(""" + SELECT d + FROM DashboardUserDO d + WHERE (:#{#userName} IS NULL OR :#{#userName} = '' OR d.userName LIKE CONCAT('%', :#{#userName}, '%')) + """) + Page findByQuery(@Param("userName") String userName, Pageable pageable); + + /** + * Update selective. + * + * @param entity the entity + * @return the int + */ + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE DashboardUserDO d SET + d.userName = COALESCE(:#{#entity.userName}, d.userName), + d.password = COALESCE(:#{#entity.password}, d.password), + d.role = COALESCE(:#{#entity.role}, d.role), + d.enabled = COALESCE(:#{#entity.enabled}, d.enabled), + d.clientId = COALESCE(:#{#entity.clientId}, d.clientId), + d.dateUpdated = CURRENT_TIMESTAMP + WHERE d.id = :#{#entity.id} + """) + int updateSelective(@Param("entity") DashboardUserDO entity); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DataPermissionRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DataPermissionRepository.java new file mode 100644 index 000000000000..7574e3e18415 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DataPermissionRepository.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.DataPermissionDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * The interface Data permission repository. + */ +@Repository +public interface DataPermissionRepository extends JpaRepository { + + /** + * Find by user id. + * + * @param userId the user id + * @return the list + */ + List findByUserId(String userId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DetailRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DetailRepository.java new file mode 100644 index 000000000000..d0675d12016b --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DetailRepository.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.DetailDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + * The interface Detail repository. + */ +@Repository +public interface DetailRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryHandlerRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryHandlerRepository.java new file mode 100644 index 000000000000..cba89f7c9cee --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryHandlerRepository.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.DiscoveryHandlerDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + * DiscoveryHandlerRepository. + */ +@Repository +public interface DiscoveryHandlerRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRelRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRelRepository.java new file mode 100644 index 000000000000..b07fd7c1e5e8 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRelRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.DiscoveryRelDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * The interface Discovery rel repository. + */ +@Repository +public interface DiscoveryRelRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRepository.java new file mode 100644 index 000000000000..b4f1eb58cc91 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRepository.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.DiscoveryDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface DiscoveryRepository extends JpaRepository { + + /** + * Query by namespace id. + * + * @param namespaceId the namespace id + * @return the list + */ + List findByNamespaceId(@Param("namespaceId") String namespaceId); + + /** + * Update selective. + * + * @param entity the entity + * @return the int + */ + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE DiscoveryDO d SET + d.namespaceId = COALESCE(:#{#entity.namespaceId}, d.namespaceId), + d.pluginName = COALESCE(:#{#entity.pluginName}, d.pluginName), + d.discoveryType = COALESCE(:#{#entity.discoveryType}, d.discoveryType), + d.discoveryLevel = COALESCE(:#{#entity.discoveryLevel}, d.discoveryLevel), + d.serverList = COALESCE(:#{#entity.serverList}, d.serverList), + d.props = COALESCE(:#{#entity.props}, d.props), + d.dateUpdated = CURRENT_TIMESTAMP + WHERE d.id = :#{#entity.id} + """) + int updateSelective(@Param("entity") DiscoveryDO entity); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryUpstreamRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryUpstreamRepository.java new file mode 100644 index 000000000000..62399d662144 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/DiscoveryUpstreamRepository.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.DiscoveryUpstreamDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + * The interface Discovery upstream repository. + */ +@Repository +public interface DiscoveryUpstreamRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + /** + * Find by namespace id. + * + * @param namespaceId the namespace id + * @return the list + */ + List findByNamespaceId(String namespaceId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/FieldRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/FieldRepository.java new file mode 100644 index 000000000000..3b4bf6fdcf76 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/FieldRepository.java @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.FieldDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + * The interface Field repository. + */ +@Repository +public interface FieldRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + /** + * Update selective. + * + * @param entity the entity + * @return the int + */ + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE FieldDO f SET + f.modelId = COALESCE(:#{#entity.modelId}, f.modelId), + f.selfModelId = COALESCE(:#{#entity.selfModelId}, f.selfModelId), + f.name = COALESCE(:#{#entity.name}, f.name), + f.fieldDesc = COALESCE(:#{#entity.fieldDesc}, f.fieldDesc), + f.isRequired = COALESCE(:#{#entity.required}, f.isRequired), + f.ext = COALESCE(:#{#entity.ext}, f.ext), + f.dateUpdated = CURRENT_TIMESTAMP + WHERE f.id = :#{#entity.id} + """) + int updateSelective(@Param("entity") FieldDO entity); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/InstanceInfoRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/InstanceInfoRepository.java new file mode 100644 index 000000000000..ec5d8a190509 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/InstanceInfoRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.InstanceInfoDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * The interface Instance info repository. + */ +@Repository +public interface InstanceInfoRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/MetaDataRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/MetaDataRepository.java new file mode 100644 index 000000000000..3b71b44ef884 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/MetaDataRepository.java @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.MetaDataDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; + +/** + * The interface Meta data repository. + */ +@Repository +public interface MetaDataRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + /** + * Find all by namespace id. + * + * @param namespaceId the namespace id + * @return the list + */ + List findByNamespaceId(String namespaceId); + + /** + * Find by path and namespace id. + * + * @param path the path + * @param namespaceId the namespace id + * @return the optional + */ + Optional findByPathAndNamespaceId(String path, String namespaceId); + + /** + * Find by service name and method name and namespace id. + * + * @param serviceName the service name + * @param methodName the method name + * @param namespaceId the namespace id + * @return the list + */ + List findByServiceNameAndMethodNameAndNamespaceId(String serviceName, String methodName, String namespaceId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/MockRequestRecordRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/MockRequestRecordRepository.java new file mode 100644 index 000000000000..6b477f36fe2c --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/MockRequestRecordRepository.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.MockRequestRecordDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + * The interface Mock request record repository. + */ +@Repository +public interface MockRequestRecordRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + /** + * Find by api id. + * + * @param apiId the api id + * @return the list + */ + List findByApiId(String apiId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ModelRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ModelRepository.java new file mode 100644 index 000000000000..61865c2acfd3 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ModelRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ModelDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * The interface Model repository. + */ +@Repository +public interface ModelRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespacePluginRelRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespacePluginRelRepository.java new file mode 100644 index 000000000000..15d296ba65d4 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespacePluginRelRepository.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.NamespacePluginRelDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + * The interface Namespace plugin rel repository. + */ +@Repository +public interface NamespacePluginRelRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespaceRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespaceRepository.java new file mode 100644 index 000000000000..8e6f7b1f6fa0 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespaceRepository.java @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.NamespaceDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.Optional; + +/** + * The interface Namespace repository. + */ +@Repository +public interface NamespaceRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsByNamespaceId((String) key); + } + + /** + * Check if exists by namespace id. + * + * @param namespaceId the namespace id + * @return true if exists + */ + boolean existsByNamespaceId(String namespaceId); + + /** + * Find by namespace id. + * + * @param namespaceId the namespace id + * @return the optional + */ + Optional findByNamespaceId(String namespaceId); + + + /** + * Update selective. + * + * @param entity the entity + * @return the int + */ + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + UPDATE NamespaceDO n SET + n.namespaceId = COALESCE(:#{#entity.namespaceId}, n.namespaceId), + n.name = COALESCE(:#{#entity.name}, n.name), + n.description = COALESCE(:#{#entity.description}, n.description), + n.dateUpdated = CURRENT_TIMESTAMP + WHERE n.id = :#{#entity.id} + """) + int updateSelective(@Param("entity") NamespaceDO entity); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespaceUserRelRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespaceUserRelRepository.java new file mode 100644 index 000000000000..e2fbe6e48fe0 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/NamespaceUserRelRepository.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.NamespaceUserRelDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * The interface Namespace user rel repository. + */ +@Repository +public interface NamespaceUserRelRepository extends JpaRepository { + + /** + * Find list by user id. + * + * @param userId the user id + * @return the list + */ + List findByUserId(String userId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/OperationRecordLogRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/OperationRecordLogRepository.java new file mode 100644 index 000000000000..52d34ffbe23b --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/OperationRecordLogRepository.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.OperationRecordLog; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; + +/** + * The interface Operation record log repository. + */ +@Repository +public interface OperationRecordLogRepository extends JpaRepository { + + /** + * Select limit by operator. + * + * @param operator the operator username + * @param pageable the pageable + * @return the list + */ + List findByOperatorOrderByOperationTimeDesc(String operator, Pageable pageable); + + /** + * Select limit order by operation time desc. + * + * @param pageable the pageable + * @return the list + */ + List findByOrderByOperationTimeDesc(Pageable pageable); + + /** + * Delete by before. + * + * @param time the time + * @return the int + */ + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(""" + DELETE FROM OperationRecordLog o WHERE o.operationTime < :time + """) + int deleteByBefore(@Param("time") Date time); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ParameterRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ParameterRepository.java new file mode 100644 index 000000000000..cf555868dad1 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ParameterRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ParameterDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * The interface Parameter repository. + */ +@Repository +public interface ParameterRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PermissionRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PermissionRepository.java new file mode 100644 index 000000000000..d422f978b6d5 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PermissionRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.PermissionDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * The interface Permission repository. + */ +@Repository +public interface PermissionRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PluginHandleRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PluginHandleRepository.java new file mode 100644 index 000000000000..d15b0ce0c5fd --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PluginHandleRepository.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.PluginHandleDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +/** + * PluginHandleRepository. + */ +@Repository +public interface PluginHandleRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + /** + * Find by plugin id. + * + * @param pluginId the pluginId + * @return the list + */ + List findByPluginId(String pluginId); + + /** + * Select by plugin id list. + * + * @param pluginIds a list of plugin ids + * @return the list + */ + List findByPluginIdIn(List pluginIds); + + /** + * Select by plugin ids. + * + * @param pluginIds a collection of plugin ids + * @return the list + */ + List findByPluginIdIn(Collection pluginIds); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PluginRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PluginRepository.java new file mode 100644 index 000000000000..e85eb3639635 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/PluginRepository.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.PluginDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; + +/** + * PluginRepository. + */ +@Repository +public interface PluginRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + /** + * Find by name. + * + * @param name the name + * @return {@linkplain PluginDO} + */ + Optional findByName(String name); + + /** + * Select all not in resource. + * + * @return {@linkplain List} + */ + @Query("SELECT p FROM PluginDO p WHERE p.id NOT IN (SELECT r.id FROM ResourceDO r)") + List listAllNotInResource(); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ProxySelectorRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ProxySelectorRepository.java new file mode 100644 index 000000000000..b83678a69098 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ProxySelectorRepository.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ProxySelectorDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + * ProxySelectorRepository. + */ +@Repository +public interface ProxySelectorRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param key id + * @return true or false + */ + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } + + + /** + * Select by namespace id. + * + * @param namespaceId namespaceId + * @return ProxySelectorDOList + */ + List findByNamespaceId(String namespaceId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RegistryRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RegistryRepository.java new file mode 100644 index 000000000000..7afa00613d75 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RegistryRepository.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.RegistryDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.Optional; + +/** + * RegistryRepository. + */ +@Repository +public interface RegistryRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + /** + * Select by registry id. + * + * @param registryId registryId + * @return {@linkplain RegistryDO} + */ + Optional findByRegistryId(String registryId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ResourceRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ResourceRepository.java new file mode 100644 index 000000000000..86eb20c764b4 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ResourceRepository.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ResourceDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +@Repository +public interface ResourceRepository extends JpaRepository, ExistProvider { + + @Override + default Boolean existed(Serializable key) { + return existsById((String) key); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RoleRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RoleRepository.java new file mode 100644 index 000000000000..0d4113671a6b --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RoleRepository.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.RoleDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.Optional; + +/** + * RoleRepository. + */ +@Repository +public interface RoleRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + /** + * Find by role name. + * + * @param roleName the role name + * @return The role + */ + Optional findByRoleName(String roleName); + +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RuleConditionRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RuleConditionRepository.java new file mode 100644 index 000000000000..f08ff883a689 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RuleConditionRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.RuleConditionDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * RuleConditionRepository. + */ +@Repository +public interface RuleConditionRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RuleRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RuleRepository.java new file mode 100644 index 000000000000..0502d0091977 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/RuleRepository.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.RuleDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; + +/** + * RuleRepository. + */ +@Repository +public interface RuleRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + /** + * Find by selector id. + * + * @param selectorId the selector id + * @return list of {@linkplain RuleDO} + */ + List findBySelectorId(String selectorId); + + /** + * Find by selector ids. + * + * @param selectorIds the selector ids + * @return list of {@linkplain RuleDO} + */ + List findBySelectorIdIn(List selectorIds); + + /** + * Find by rule name. + * + * @param ruleName the rule name + * @return {@linkplain RuleDO} + */ + Optional findByRuleName(String ruleName); + + /** + * Find by selector id and rule name. + * + * @param selectorId the selector id + * @param ruleName the rule name + * @return {@linkplain RuleDO} + */ + Optional findBySelectorIdAndRuleName(String selectorId, String ruleName); + +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScaleHistoryRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScaleHistoryRepository.java new file mode 100644 index 000000000000..45a6faff5621 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScaleHistoryRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ScaleHistoryDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * ScaleHistoryRepository. + */ +@Repository +public interface ScaleHistoryRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScalePolicyRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScalePolicyRepository.java new file mode 100644 index 000000000000..2acc7534ee67 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScalePolicyRepository.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ScalePolicyDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + * ScalePolicyRepository. + */ +@Repository +public interface ScalePolicyRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScaleRuleRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScaleRuleRepository.java new file mode 100644 index 000000000000..f77d7b827f44 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ScaleRuleRepository.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ScaleRuleDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + * ScaleRuleRepository. + */ +@Repository +public interface ScaleRuleRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/SelectorConditionRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/SelectorConditionRepository.java new file mode 100644 index 000000000000..8e0849c1f9c4 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/SelectorConditionRepository.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.SelectorConditionDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * SelectorConditionRepository. + */ +@Repository +public interface SelectorConditionRepository extends JpaRepository { +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/SelectorRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/SelectorRepository.java new file mode 100644 index 000000000000..24958a8359da --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/SelectorRepository.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.SelectorDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + * SelectorRepository. + */ +@Repository +public interface SelectorRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ShenyuDictRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ShenyuDictRepository.java new file mode 100644 index 000000000000..722c4a406abb --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/ShenyuDictRepository.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.ShenyuDictDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; + +/** + * ShenyuDictRepository. + */ +@Repository +public interface ShenyuDictRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + List findByType(String type); + + Optional findByDictCodeAndDictName(String dictCode, String dictName); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/TagRelationRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/TagRelationRepository.java new file mode 100644 index 000000000000..317e3cb549b5 --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/TagRelationRepository.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.TagRelationDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + * TagRelationRepository. + */ +@Repository +public interface TagRelationRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + List findByApiId(String apiId); + + List findByTagId(String tagId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/TagRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/TagRepository.java new file mode 100644 index 000000000000..d7ac64faab8c --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/TagRepository.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.TagDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + * TagRepository. + */ +@Repository +public interface TagRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + List findByParentTagIdIn(List parentTagIds); + + + List findByParentTagId(String parentTagId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/UserRoleRepository.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/UserRoleRepository.java new file mode 100644 index 000000000000..106c79d4a8ae --- /dev/null +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/jpa/repository/UserRoleRepository.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import org.apache.shenyu.admin.model.entity.UserRoleDO; +import org.apache.shenyu.admin.validation.ExistProvider; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; +import java.util.List; + +/** + * UserRoleRepository. + */ +@Repository +public interface UserRoleRepository extends JpaRepository, ExistProvider { + + /** + * existed. + * + * @param id id + * @return existed + */ + @Override + default Boolean existed(Serializable id) { + return existsById((String) id); + } + + List findByUserId(String userId); +} diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ApiDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ApiDTO.java index 9fed0fa046bc..11c925f48b6f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ApiDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ApiDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.ApiMapper; +import org.apache.shenyu.admin.jpa.repository.ApiRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.Max; @@ -38,7 +38,7 @@ public class ApiDTO implements Serializable { /** * primary key id. */ - @Existed(provider = ApiMapper.class, nullOfIgnore = true, message = "the api is not exited") + @Existed(provider = ApiRepository.class, nullOfIgnore = true, message = "the api is not exited") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java index 662b8bf5f6fa..3f5d43cce178 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AppAuthDTO.java @@ -17,8 +17,8 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.AppAuthMapper; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.AppAuthRepository; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.Valid; @@ -39,7 +39,7 @@ public class AppAuthDTO implements Serializable { * primary key. */ @NotBlank(message = "app auth id not null") - @Existed(message = "app auth is not existed", provider = AppAuthMapper.class) + @Existed(message = "app auth is not existed", provider = AppAuthRepository.class) private String id; /** @@ -81,7 +81,7 @@ public class AppAuthDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java index 0c816273c775..819b49875dc8 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthApplyDTO.java @@ -19,7 +19,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -56,7 +56,7 @@ public class AuthApplyDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java index 238b73dfe803..95d76647c78c 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/AuthPathWarpDTO.java @@ -19,7 +19,7 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; -import org.apache.shenyu.admin.mapper.AppAuthMapper; +import org.apache.shenyu.admin.jpa.repository.AppAuthRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -33,7 +33,7 @@ public class AuthPathWarpDTO implements Serializable { private static final long serialVersionUID = -3167442906221294444L; - @Existed(message = "app key not existed", provider = AppAuthMapper.class) + @Existed(message = "app key not existed", provider = AppAuthRepository.class) private String id; @NotEmpty(message = "auth path is not empty") diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/BatchNamespaceCommonDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/BatchNamespaceCommonDTO.java index 4e9db852c75c..028ffc5ffb1d 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/BatchNamespaceCommonDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/BatchNamespaceCommonDTO.java @@ -20,7 +20,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -40,7 +40,7 @@ public class BatchNamespaceCommonDTO implements Serializable { private Boolean enabled; @NotEmpty - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DetailDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DetailDTO.java index 1232d2ddefd8..208702012f09 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DetailDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DetailDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.DetailMapper; +import org.apache.shenyu.admin.jpa.repository.DetailRepository; import org.apache.shenyu.admin.model.entity.DetailDO; import org.apache.shenyu.admin.validation.annotation.Existed; @@ -28,7 +28,7 @@ public class DetailDTO { private static final long serialVersionUID = 7247613164345326366L; - @Existed(provider = DetailMapper.class, nullOfIgnore = true, message = "detail is not existed") + @Existed(provider = DetailRepository.class, nullOfIgnore = true, message = "detail is not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DiscoveryDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DiscoveryDTO.java index 8be5ae40bd65..746dc0ec999e 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DiscoveryDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DiscoveryDTO.java @@ -19,7 +19,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -74,7 +74,7 @@ public class DiscoveryDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DiscoveryUpstreamDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DiscoveryUpstreamDTO.java index dcceeb0bf4cc..6203cee0bd46 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DiscoveryUpstreamDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/DiscoveryUpstreamDTO.java @@ -17,8 +17,8 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.DiscoveryUpstreamMapper; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.DiscoveryUpstreamRepository; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -36,7 +36,7 @@ public class DiscoveryUpstreamDTO implements Serializable { /** * id. */ - @Existed(provider = DiscoveryUpstreamMapper.class, nullOfIgnore = true, message = "discovery upstream not exited") + @Existed(provider = DiscoveryUpstreamRepository.class, nullOfIgnore = true, message = "discovery upstream not exited") private String id; /** @@ -49,7 +49,7 @@ public class DiscoveryUpstreamDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/FieldDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/FieldDTO.java index 1b93317d0e86..8138a09a23e2 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/FieldDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/FieldDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.FieldMapper; +import org.apache.shenyu.admin.jpa.repository.FieldRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -33,7 +33,7 @@ public class FieldDTO implements Serializable { private static final long serialVersionUID = 7476131236434536366L; - @Existed(provider = FieldMapper.class, nullOfIgnore = true, message = "filed is not existed") + @Existed(provider = FieldRepository.class, nullOfIgnore = true, message = "filed is not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MetaDataDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MetaDataDTO.java index a70ce3dd71aa..c41d6c6c25f7 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MetaDataDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MetaDataDTO.java @@ -17,8 +17,8 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.MetaDataMapper; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.MetaDataRepository; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -30,7 +30,7 @@ public class MetaDataDTO implements Serializable { private static final long serialVersionUID = 7476312364813536366L; - @Existed(provider = MetaDataMapper.class, nullOfIgnore = true, message = "meta data is not existed") + @Existed(provider = MetaDataRepository.class, nullOfIgnore = true, message = "meta data is not existed") private String id; /** @@ -98,7 +98,7 @@ public class MetaDataDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MockRequestRecordDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MockRequestRecordDTO.java index 1d747ebb6c93..ad9013ddae66 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MockRequestRecordDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/MockRequestRecordDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.ApiMapper; +import org.apache.shenyu.admin.jpa.repository.ApiRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -39,7 +39,7 @@ public class MockRequestRecordDTO implements Serializable { /** * apiId. */ - @Existed(provider = ApiMapper.class, nullOfIgnore = true, message = "the apiId is not exited") + @Existed(provider = ApiRepository.class, nullOfIgnore = true, message = "the apiId is not exited") private String apiId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/NamespaceSyncDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/NamespaceSyncDTO.java index f1bcbdf5ae55..371bc1feb177 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/NamespaceSyncDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/NamespaceSyncDTO.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.model.dto; import jakarta.validation.constraints.NotBlank; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -28,7 +28,7 @@ public class NamespaceSyncDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginDTO.java index 9d260c9c51b5..797ebb4c43c6 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginDTO.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.model.dto; import org.apache.commons.lang3.StringUtils; -import org.apache.shenyu.admin.mapper.PluginMapper; +import org.apache.shenyu.admin.jpa.repository.PluginRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.Min; @@ -38,7 +38,7 @@ public class PluginDTO implements Serializable { /** * primary key. */ - @Existed(provider = PluginMapper.class, nullOfIgnore = true, message = "the plugin is not exited") + @Existed(provider = PluginRepository.class, nullOfIgnore = true, message = "the plugin is not exited") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginHandleDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginHandleDTO.java index c3915f0f3789..5986b7accce6 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginHandleDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/PluginHandleDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.PluginHandleMapper; +import org.apache.shenyu.admin.jpa.repository.PluginHandleRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -35,7 +35,7 @@ public class PluginHandleDTO implements Serializable { /** * primary key. */ - @Existed(provider = PluginHandleMapper.class, nullOfIgnore = true, message = "rule not exited") + @Existed(provider = PluginHandleRepository.class, nullOfIgnore = true, message = "rule not exited") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ProxySelectorAddDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ProxySelectorAddDTO.java index 661ca0c0884b..c953fcaad739 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ProxySelectorAddDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ProxySelectorAddDTO.java @@ -17,8 +17,8 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.NamespaceMapper; -import org.apache.shenyu.admin.mapper.ProxySelectorMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; +import org.apache.shenyu.admin.jpa.repository.ProxySelectorRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -36,7 +36,7 @@ public class ProxySelectorAddDTO implements Serializable { /** * id. */ - @Existed(provider = ProxySelectorMapper.class, nullOfIgnore = true, message = "proxy selector not exited") + @Existed(provider = ProxySelectorRepository.class, nullOfIgnore = true, message = "proxy selector not exited") private String id; /** @@ -95,7 +95,7 @@ public class ProxySelectorAddDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ProxySelectorDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ProxySelectorDTO.java index 5aca107f8642..ff79c25767b7 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ProxySelectorDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ProxySelectorDTO.java @@ -17,8 +17,8 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.NamespaceMapper; -import org.apache.shenyu.admin.mapper.ProxySelectorMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; +import org.apache.shenyu.admin.jpa.repository.ProxySelectorRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -35,7 +35,7 @@ public class ProxySelectorDTO implements Serializable { /** * id. */ - @Existed(provider = ProxySelectorMapper.class, nullOfIgnore = true, message = "proxy selector not exited") + @Existed(provider = ProxySelectorRepository.class, nullOfIgnore = true, message = "proxy selector not exited") private String id; /** @@ -72,7 +72,7 @@ public class ProxySelectorDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ResourceDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ResourceDTO.java index ed0a45a35d7a..ce827c152940 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ResourceDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ResourceDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.ResourceMapper; +import org.apache.shenyu.admin.jpa.repository.ResourceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -32,7 +32,7 @@ public class ResourceDTO { /** * primary key. */ - @Existed(provider = ResourceMapper.class, nullOfIgnore = true, message = "resource not existed") + @Existed(provider = ResourceRepository.class, nullOfIgnore = true, message = "resource not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RoleDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RoleDTO.java index c005f7483c9e..b2e23df3fc04 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RoleDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RoleDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.RoleMapper; +import org.apache.shenyu.admin.jpa.repository.RoleRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -35,7 +35,7 @@ public class RoleDTO implements Serializable { /** * primary key. */ - @Existed(provider = RoleMapper.class, nullOfIgnore = true, message = "role is not existed") + @Existed(provider = RoleRepository.class, nullOfIgnore = true, message = "role is not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RuleDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RuleDTO.java index 66747dd4f8ac..90b41cf0c0ba 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RuleDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/RuleDTO.java @@ -17,9 +17,9 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.NamespaceMapper; -import org.apache.shenyu.admin.mapper.RuleMapper; -import org.apache.shenyu.admin.mapper.SelectorMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; +import org.apache.shenyu.admin.jpa.repository.RuleRepository; +import org.apache.shenyu.admin.jpa.repository.SelectorRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.Valid; @@ -40,14 +40,14 @@ public final class RuleDTO implements Serializable { /** * primary key. */ - @Existed(provider = RuleMapper.class, nullOfIgnore = true, message = "rule is not existed") + @Existed(provider = RuleRepository.class, nullOfIgnore = true, message = "rule is not existed") private String id; /** * selector id. */ @NotBlank - @Existed(provider = SelectorMapper.class, message = "selector is not existed") + @Existed(provider = SelectorRepository.class, message = "selector is not existed") private String selectorId; /** @@ -99,7 +99,7 @@ public final class RuleDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; public RuleDTO() { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ScalePolicyDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ScalePolicyDTO.java index 026e208eca7f..a4c9b3935da1 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ScalePolicyDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ScalePolicyDTO.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.model.dto; import jakarta.validation.constraints.NotNull; -import org.apache.shenyu.admin.mapper.ScalePolicyMapper; +import org.apache.shenyu.admin.jpa.repository.ScalePolicyRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -36,7 +36,7 @@ public class ScalePolicyDTO implements Serializable { /** * primary key id. */ - @Existed(provider = ScalePolicyMapper.class, nullOfIgnore = true, message = "scale policy is not existed") + @Existed(provider = ScalePolicyRepository.class, nullOfIgnore = true, message = "scale policy is not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/SelectorDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/SelectorDTO.java index 8bc7a5065515..2e584e589c7a 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/SelectorDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/SelectorDTO.java @@ -17,9 +17,9 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.NamespaceMapper; -import org.apache.shenyu.admin.mapper.PluginMapper; -import org.apache.shenyu.admin.mapper.SelectorMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; +import org.apache.shenyu.admin.jpa.repository.PluginRepository; +import org.apache.shenyu.admin.jpa.repository.SelectorRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import org.hibernate.validator.constraints.Range; @@ -42,14 +42,14 @@ public final class SelectorDTO implements Serializable { /** * primary key. */ - @Existed(provider = SelectorMapper.class, nullOfIgnore = true, message = "selector is not existed") + @Existed(provider = SelectorRepository.class, nullOfIgnore = true, message = "selector is not existed") private String id; /** * plugin id. */ @NotBlank - @Existed(provider = PluginMapper.class, message = "plugin is not existed") + @Existed(provider = PluginRepository.class, message = "plugin is not existed") private String pluginId; /** @@ -118,7 +118,7 @@ public final class SelectorDTO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; public SelectorDTO() { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ShenyuDictDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ShenyuDictDTO.java index 5efd9976d04c..e856e13ed81c 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ShenyuDictDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/ShenyuDictDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.ShenyuDictMapper; +import org.apache.shenyu.admin.jpa.repository.ShenyuDictRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import jakarta.validation.constraints.NotBlank; @@ -35,7 +35,7 @@ public class ShenyuDictDTO implements Serializable { /** * primary key. */ - @Existed(provider = ShenyuDictMapper.class, nullOfIgnore = true, message = "dict is not existed") + @Existed(provider = ShenyuDictRepository.class, nullOfIgnore = true, message = "dict is not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/TagDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/TagDTO.java index 25bb6165d1a4..76d238574343 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/TagDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/TagDTO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.dto; -import org.apache.shenyu.admin.mapper.TagMapper; +import org.apache.shenyu.admin.jpa.repository.TagRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -32,7 +32,7 @@ public class TagDTO implements Serializable { /** * primary key. */ - @Existed(provider = TagMapper.class, nullOfIgnore = true, message = "tag is not existed") + @Existed(provider = TagRepository.class, nullOfIgnore = true, message = "tag is not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/TagRelationDTO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/TagRelationDTO.java index 2ae486623b7b..3c63a9ab4f1c 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/TagRelationDTO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/TagRelationDTO.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.model.dto; import java.io.Serializable; -import org.apache.shenyu.admin.mapper.TagRelationMapper; +import org.apache.shenyu.admin.jpa.repository.TagRelationRepository; import org.apache.shenyu.admin.validation.annotation.Existed; /** @@ -31,7 +31,7 @@ public class TagRelationDTO implements Serializable { /** * primary key. */ - @Existed(provider = TagRelationMapper.class, nullOfIgnore = true, message = "tag relation id is not existed") + @Existed(provider = TagRelationRepository.class, nullOfIgnore = true, message = "tag relation id is not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AlertReceiverDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AlertReceiverDO.java index 9ddd27f7bc15..d11119a4ea3f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AlertReceiverDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AlertReceiverDO.java @@ -17,6 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import org.apache.shenyu.admin.jpa.converter.ListByteConverter; +import org.apache.shenyu.admin.jpa.converter.MapStringConverter; +import org.hibernate.annotations.DynamicUpdate; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + import java.util.Date; import java.util.List; import java.util.Map; @@ -24,11 +37,16 @@ /** * AlertReceiver. */ +@DynamicUpdate +@Entity +@Table(name = "alert_receiver") +@EntityListeners(AuditingEntityListener.class) public class AlertReceiverDO { /** * primary key id. */ + @Id private String id; /** @@ -146,11 +164,13 @@ public class AlertReceiverDO { /** * match alert levels. */ + @Convert(converter = ListByteConverter.class) private List levels; /** * match alert labels. */ + @Convert(converter = MapStringConverter.class) private Map labels; /** @@ -161,11 +181,14 @@ public class AlertReceiverDO { /** * create time. */ + @CreatedDate + @Column(updatable = false) private Date dateCreated; /** * update time. */ + @LastModifiedDate private Date dateUpdated; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiDO.java index c85fce9959e2..32e8482127d8 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiDO.java @@ -17,10 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.Id; +import jakarta.persistence.Table; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.ApiDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.sql.Timestamp; import java.util.Date; @@ -29,10 +38,15 @@ /** * api. */ +@DynamicUpdate +@Entity +@Table(name = "api") +@EntityListeners(AuditingEntityListener.class) public class ApiDO { /** * primary key id. */ + @Id private String id; /** @@ -108,11 +122,14 @@ public class ApiDO { /** * create time. */ + @CreatedDate + @Column(updatable = false) private Date dateCreated; /** * update time. */ + @LastModifiedDate private Date dateUpdated; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiRuleRelationDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiRuleRelationDO.java index a88e763e29ac..f7748b4f9a18 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiRuleRelationDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ApiRuleRelationDO.java @@ -17,16 +17,31 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + import java.util.Date; /** * ApiRuleRelation. */ +@DynamicUpdate +@Entity +@Table(name = "api_rule_relation") +@EntityListeners(AuditingEntityListener.class) public class ApiRuleRelationDO { /** * primary key id. */ + @Id private String id; /** @@ -42,11 +57,14 @@ public class ApiRuleRelationDO { /** * create time. */ + @CreatedDate + @Column(updatable = false) private Date dateCreated; /** * update time. */ + @LastModifiedDate private Date dateUpdated; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AppAuthDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AppAuthDO.java index 4c050968a7af..e73b456d6d86 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AppAuthDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AppAuthDO.java @@ -17,11 +17,14 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.AppAuthDTO; import org.apache.shenyu.admin.model.dto.AuthApplyDTO; import org.apache.shenyu.common.utils.SignUtils; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -30,6 +33,9 @@ /** * AppAuthDO. */ +@DynamicUpdate +@Entity +@Table(name = "app_auth") public final class AppAuthDO extends BaseDO { private static final long serialVersionUID = 5683408559456006830L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AuthParamDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AuthParamDO.java index a5194c23a319..739cfa0e77c8 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AuthParamDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AuthParamDO.java @@ -17,7 +17,10 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -25,6 +28,9 @@ /** * The type Auth param do. */ +@DynamicUpdate +@Entity +@Table(name = "auth_param") public final class AuthParamDO extends BaseDO { private static final long serialVersionUID = -6719996683886817375L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AuthPathDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AuthPathDO.java index be83e81c75fb..5ab7e25aa739 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AuthPathDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/AuthPathDO.java @@ -17,7 +17,10 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -25,6 +28,9 @@ /** * The type Auth path do. */ +@DynamicUpdate +@Entity +@Table(name = "auth_path") public final class AuthPathDO extends BaseDO { private static final long serialVersionUID = 2265360597468199607L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/BaseDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/BaseDO.java index 97705c7642bc..53d472b5a65b 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/BaseDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/BaseDO.java @@ -17,6 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.Id; +import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.PostLoad; +import jakarta.persistence.PostPersist; +import jakarta.persistence.PostUpdate; +import jakarta.persistence.Transient; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.domain.Persistable; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + import java.io.Serializable; import java.sql.Timestamp; import java.util.Objects; @@ -24,25 +37,37 @@ /** * BaseDO. */ -public class BaseDO implements Serializable { +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class BaseDO implements Serializable, Persistable { private static final long serialVersionUID = 2174741380632669212L; /** * primary key. */ + @Id private String id; /** * created time. */ + @CreatedDate + @Column(updatable = false) private Timestamp dateCreated; /** * updated time. */ + @LastModifiedDate private Timestamp dateUpdated; + /** + * mark if the entity is new. + */ + @Transient + private boolean isNew = true; + public BaseDO() { } @@ -57,6 +82,7 @@ public BaseDO(final String id, final Timestamp dateCreated, final Timestamp date * * @return the value of id */ + @Override public String getId() { return id; } @@ -122,4 +148,24 @@ public boolean equals(final Object o) { public int hashCode() { return Objects.hash(id, dateCreated, dateUpdated); } + + /** + * Check if the entity is new (not persisted yet). + * + * @return true if the entity is new, false otherwise + */ + @Override + public boolean isNew() { + return this.isNew; + } + + /** + * Mark the entity as not new after persist, update or load. + */ + @PostPersist + @PostUpdate + @PostLoad + public void markNotNew() { + this.isNew = false; + } } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ClusterMasterDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ClusterMasterDO.java index e91f8c6522c0..2fd78363ceff 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ClusterMasterDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ClusterMasterDO.java @@ -17,6 +17,16 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + import java.io.Serializable; import java.sql.Timestamp; import java.util.Date; @@ -24,6 +34,10 @@ /** * The type cluster master dto. */ +@DynamicUpdate +@Entity +@Table(name = "cluster_master") +@EntityListeners(AuditingEntityListener.class) public class ClusterMasterDO implements Serializable { private static final long serialVersionUID = -7115137071311176280L; @@ -31,6 +45,7 @@ public class ClusterMasterDO implements Serializable { /** * primary key id. */ + @Id private String id; /** @@ -51,11 +66,14 @@ public class ClusterMasterDO implements Serializable { /** * created time. */ + @CreatedDate + @Column(updatable = false) private Timestamp dateCreated; /** * updated time. */ + @LastModifiedDate private Timestamp dateUpdated; public ClusterMasterDO() { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DashboardUserDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DashboardUserDO.java index 733913be8cee..9de1a39ecaad 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DashboardUserDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DashboardUserDO.java @@ -17,10 +17,14 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.DashboardUserDTO; import org.apache.shenyu.admin.model.dto.DashboardUserModifyPasswordDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.List; @@ -30,6 +34,9 @@ /** * DashboardUserDO. */ +@DynamicUpdate +@Entity +@Table(name = "dashboard_user") public final class DashboardUserDO extends BaseDO { private static final long serialVersionUID = 3464935043890680423L; @@ -62,6 +69,7 @@ public final class DashboardUserDO extends BaseDO { /** * current role list. */ + @Transient private List roles; public DashboardUserDO() { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DataPermissionDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DataPermissionDO.java index f8602fc573a9..97121495ca6a 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DataPermissionDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DataPermissionDO.java @@ -17,9 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.DataPermissionDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +31,9 @@ /** * The Data Permission Entity. */ +@DynamicUpdate +@Entity +@Table(name = "data_permission") public final class DataPermissionDO extends BaseDO { private static final long serialVersionUID = 8732493731708038311L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DetailDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DetailDO.java index e91e92e88c04..a79946b5e0e5 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DetailDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DetailDO.java @@ -17,12 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; import java.util.Objects; /** * DetailDO. */ +@DynamicUpdate +@Entity +@Table(name = "detail") public class DetailDO extends BaseDO { /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryDO.java index 0f684b5ba7d7..699869c70a10 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryDO.java @@ -17,12 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; import java.util.Objects; /** * DiscoveryDO. */ +@DynamicUpdate +@Entity +@Table(name = "discovery") public final class DiscoveryDO extends BaseDO { private String discoveryName; @@ -43,7 +50,7 @@ public DiscoveryDO() { } - public DiscoveryDO(final String discoveryName, final String discoveryType, final String level, final String serverList, + public DiscoveryDO(final String discoveryName, final String discoveryType, final String discoveryLevel, final String serverList, final String pluginName, final String props) { this.discoveryName = discoveryName; this.discoveryType = discoveryType; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryHandlerDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryHandlerDO.java index 14ce32387eb3..7ada511527cb 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryHandlerDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryHandlerDO.java @@ -17,12 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; import java.util.Objects; /** * DiscoveryHandlerDO. */ +@DynamicUpdate +@Entity +@Table(name = "discovery_handler") public class DiscoveryHandlerDO extends BaseDO { private String discoveryId; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryRelDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryRelDO.java index e0fa66edfffe..2f87e38020c0 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryRelDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryRelDO.java @@ -17,12 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; import java.util.Objects; /** * DiscoveryRelDO. */ +@DynamicUpdate +@Entity +@Table(name = "discovery_rel") public final class DiscoveryRelDO extends BaseDO { private String pluginName; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryUpstreamDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryUpstreamDO.java index 93f899b8ccf6..e58a24cdbbab 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryUpstreamDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/DiscoveryUpstreamDO.java @@ -17,8 +17,11 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.shenyu.admin.model.dto.DiscoveryUpstreamDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import org.springframework.util.StringUtils; import java.sql.Timestamp; @@ -27,6 +30,9 @@ /** * discovery upstream do. */ +@DynamicUpdate +@Entity +@Table(name = "discovery_upstream") public class DiscoveryUpstreamDO extends BaseDO { private static final long serialVersionUID = 4636503463949130337L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/FieldDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/FieldDO.java index 154db8b089e9..ee483cf936f5 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/FieldDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/FieldDO.java @@ -17,12 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.util.Objects; import java.sql.Timestamp; /** * field. */ +@DynamicUpdate +@Entity +@Table(name = "field") public class FieldDO extends BaseDO { /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/InstanceInfoDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/InstanceInfoDO.java index c74417392ec4..55ce1454a3d4 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/InstanceInfoDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/InstanceInfoDO.java @@ -17,8 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; import org.apache.shenyu.admin.model.vo.InstanceInfoVO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -26,6 +30,9 @@ /** * InstanceInfoDO. */ +@DynamicUpdate +@Entity +@Table(name = "instance_info") public final class InstanceInfoDO extends BaseDO { private String instanceIp; @@ -40,6 +47,7 @@ public final class InstanceInfoDO extends BaseDO { private String namespaceId; + @Transient private long lastHeartBeatTime; public InstanceInfoDO() { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MetaDataDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MetaDataDO.java index 6190b4e5c381..5fbdacb74ed5 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MetaDataDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MetaDataDO.java @@ -17,6 +17,10 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.io.Serializable; import java.sql.Timestamp; import java.util.Objects; @@ -24,6 +28,9 @@ /** * The type Meta data do. */ +@DynamicUpdate +@Entity +@Table(name = "meta_data") public final class MetaDataDO extends BaseDO implements Serializable { private static final long serialVersionUID = 3566656950011853160L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MockRequestRecordDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MockRequestRecordDO.java index a5e5a84bf811..293fc38ad8cd 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MockRequestRecordDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/MockRequestRecordDO.java @@ -17,11 +17,18 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; /** * The Mock Request Record Entity. */ +@DynamicUpdate +@Entity +@Table(name = "mock_request_record") public class MockRequestRecordDO extends BaseDO { private static final long serialVersionUID = -30960666013060928L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ModelDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ModelDO.java index b20376487b04..52350dac4470 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ModelDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ModelDO.java @@ -17,12 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; import java.util.Objects; /** * model. */ +@DynamicUpdate +@Entity +@Table(name = "model") public class ModelDO extends BaseDO { /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespaceDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespaceDO.java index 8247f0c689c7..582dd251956a 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespaceDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespaceDO.java @@ -17,11 +17,18 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; /** * Namespace do. */ +@DynamicUpdate +@Entity +@Table(name = "namespace") public class NamespaceDO extends BaseDO { /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespacePluginRelDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespacePluginRelDO.java index 341b020b1fd2..3cf964669e31 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespacePluginRelDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespacePluginRelDO.java @@ -17,8 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.shenyu.admin.model.dto.NamespacePluginDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; import java.util.Objects; import java.util.Optional; @@ -26,6 +30,9 @@ /** * NamespacePluginRel do. */ +@DynamicUpdate +@Entity +@Table(name = "namespace_plugin_rel") public final class NamespacePluginRelDO extends BaseDO { /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespaceUserRelDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespaceUserRelDO.java index 376e0db1a248..8480a5b66a55 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespaceUserRelDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/NamespaceUserRelDO.java @@ -17,11 +17,18 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.util.Objects; /** * NamespaceUserRelDO. */ +@DynamicUpdate +@Entity +@Table(name = "namespace_user_rel") public final class NamespaceUserRelDO extends BaseDO { /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/OperationRecordLog.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/OperationRecordLog.java index 54a2b6ead99d..6641b6312a33 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/OperationRecordLog.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/OperationRecordLog.java @@ -20,17 +20,25 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; import java.util.Date; /** * operation_record_log. */ +@DynamicUpdate +@Entity +@Table(name = "operation_record_log") public class OperationRecordLog { /** * id. */ + @Id @JsonSerialize(using = ToStringSerializer.class) private Long id; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ParameterDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ParameterDO.java index 805a617577ba..6c7ccfe62f6a 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ParameterDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ParameterDO.java @@ -17,12 +17,19 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; import java.util.Objects; /** * parameter. */ +@DynamicUpdate +@Entity +@Table(name = "param") public final class ParameterDO extends BaseDO { /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PermissionDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PermissionDO.java index f2e614e0fb6e..f9f15c9c0316 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PermissionDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PermissionDO.java @@ -17,9 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.PermissionDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +31,9 @@ /** * The Permission Entity. */ +@DynamicUpdate +@Entity +@Table(name = "permission") public final class PermissionDO extends BaseDO { private static final long serialVersionUID = 8371869040638596986L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PluginDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PluginDO.java index fda4a8e8d79d..3906c125df59 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PluginDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PluginDO.java @@ -17,11 +17,15 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Lob; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.PluginDTO; import org.apache.shenyu.admin.model.vo.NamespacePluginVO; import org.apache.shenyu.common.utils.UUIDUtils; import org.apache.shiro.codec.Base64; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Arrays; @@ -32,6 +36,9 @@ * The config field has been added in 2.0 * PluginDO. */ +@DynamicUpdate +@Entity +@Table(name = "plugin") public final class PluginDO extends BaseDO { private static final long serialVersionUID = -3414676617520629553L; @@ -61,6 +68,7 @@ public final class PluginDO extends BaseDO { */ private Integer sort; + @Lob private byte[] pluginJar; public PluginDO() { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PluginHandleDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PluginHandleDO.java index afdf101c489b..e25e655be23c 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PluginHandleDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/PluginHandleDO.java @@ -17,9 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.PluginHandleDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +31,9 @@ /** * plugin handle json definition. */ +@DynamicUpdate +@Entity +@Table(name = "plugin_handle") public final class PluginHandleDO extends BaseDO { private static final long serialVersionUID = 3854807942396454551L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ProxyApiKeyDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ProxyApiKeyDO.java index 8aa253106cab..0fd5b74f6fdd 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ProxyApiKeyDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ProxyApiKeyDO.java @@ -17,11 +17,18 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + /** * ProxyApiKeyDO represents the mapping between a proxy API key and a real * upstream API key. * Table: proxy_api_key_mapping */ +@DynamicUpdate +@Entity +@Table(name = "proxy_api_key_mapping") public final class ProxyApiKeyDO extends BaseDO { private static final long serialVersionUID = 326583247188331223L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ProxySelectorDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ProxySelectorDO.java index 13f56bc39656..0dfa1a9149d0 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ProxySelectorDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ProxySelectorDO.java @@ -17,11 +17,14 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.shenyu.admin.model.dto.ProxySelectorAddDTO; import org.apache.shenyu.common.dto.ProxySelectorData; import org.apache.shenyu.common.enums.PluginEnum; import org.apache.shenyu.common.utils.JsonUtils; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import org.springframework.util.StringUtils; import java.sql.Timestamp; @@ -31,6 +34,9 @@ /** * proxy selector do. */ +@DynamicUpdate +@Entity +@Table(name = "proxy_selector") public class ProxySelectorDO extends BaseDO { private static final long serialVersionUID = 6324671206584485506L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RegistryDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RegistryDO.java index 18784a6ccda0..cbc39b4efd9f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RegistryDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RegistryDO.java @@ -17,11 +17,18 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; /** * Registry do. */ +@DynamicUpdate +@Entity +@Table(name = "registry_config") public class RegistryDO extends BaseDO { /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ResourceDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ResourceDO.java index 2d7e63b29385..df5480d1e683 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ResourceDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ResourceDO.java @@ -17,10 +17,13 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.CreateResourceDTO; import org.apache.shenyu.admin.model.dto.ResourceDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -29,6 +32,9 @@ /** * The Resource Entity. */ +@DynamicUpdate +@Entity +@Table(name = "\"resource\"") public final class ResourceDO extends BaseDO { private static final long serialVersionUID = 4663697054300237200L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RoleDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RoleDO.java index 5b2ee057dae7..52f69047d42b 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RoleDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RoleDO.java @@ -17,9 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.RoleDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +31,9 @@ /** * The Role Data Entity. */ +@DynamicUpdate +@Entity +@Table(name = "role") public final class RoleDO extends BaseDO { private static final long serialVersionUID = -7319631396664845158L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RuleConditionDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RuleConditionDO.java index 44118506a06a..d4dea179fbf2 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RuleConditionDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RuleConditionDO.java @@ -17,9 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.RuleConditionDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +31,9 @@ /** * RuleConditionDO. */ +@DynamicUpdate +@Entity +@Table(name = "rule_condition") public final class RuleConditionDO extends BaseDO { private static final long serialVersionUID = -5652026882314490873L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RuleDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RuleDO.java index 03163121803c..2dcbeacbfada 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RuleDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/RuleDO.java @@ -17,11 +17,14 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.RuleDTO; import org.apache.shenyu.common.dto.ConditionData; import org.apache.shenyu.common.dto.RuleData; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Collections; @@ -32,6 +35,9 @@ /** * RuleDO. */ +@DynamicUpdate +@Entity +@Table(name = "rule") public final class RuleDO extends BaseDO { private static final long serialVersionUID = 8050178277098166539L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScaleHistoryDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScaleHistoryDO.java index 697ad1bf1cb9..e4894ecbf3dd 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScaleHistoryDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScaleHistoryDO.java @@ -17,6 +17,10 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import org.hibernate.annotations.DynamicUpdate; + import java.sql.Timestamp; import java.util.Date; import java.util.Objects; @@ -24,6 +28,9 @@ /** * ScaleHistoryDO. */ +@DynamicUpdate +@Entity +@Table(name = "scale_history") public final class ScaleHistoryDO extends BaseDO { private static final long serialVersionUID = 9073404091200662252L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScalePolicyDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScalePolicyDO.java index 0d188f5a9de7..09feedf832ab 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScalePolicyDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScalePolicyDO.java @@ -17,10 +17,13 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.ScalePolicyDTO; import org.apache.shenyu.common.utils.DateUtils; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.text.ParseException; @@ -32,6 +35,9 @@ /** * Table: scale_policy. */ +@DynamicUpdate +@Entity +@Table(name = "scale_policy") public final class ScalePolicyDO extends BaseDO { private static final long serialVersionUID = -6895279885108899135L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScaleRuleDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScaleRuleDO.java index ede6143b431e..942460d93903 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScaleRuleDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ScaleRuleDO.java @@ -17,9 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.ScaleRuleDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +31,9 @@ /** * Table: scale_rule. */ +@DynamicUpdate +@Entity +@Table(name = "scale_rule") public final class ScaleRuleDO extends BaseDO { private static final long serialVersionUID = 8778323510074951149L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/SelectorConditionDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/SelectorConditionDO.java index b53645a6b882..7a075f7aa2ae 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/SelectorConditionDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/SelectorConditionDO.java @@ -17,9 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.SelectorConditionDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +31,9 @@ /** * SelectorConditionDO. */ +@DynamicUpdate +@Entity +@Table(name = "selector_condition") public final class SelectorConditionDO extends BaseDO { private static final long serialVersionUID = 756287802698140201L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/SelectorDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/SelectorDO.java index 190d10066903..ab7f76b4e04c 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/SelectorDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/SelectorDO.java @@ -17,7 +17,10 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; +import org.hibernate.annotations.DynamicUpdate; import org.apache.shenyu.admin.model.dto.SelectorDTO; import org.apache.shenyu.common.dto.ConditionData; import org.apache.shenyu.common.dto.SelectorData; @@ -34,6 +37,9 @@ /** * SelectorDO. */ +@DynamicUpdate +@Entity +@Table(name = "selector") public final class SelectorDO extends BaseDO { private static final long serialVersionUID = -1627940797162331235L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ShenyuDictDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ShenyuDictDO.java index 6b00b31893f5..88516108d729 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ShenyuDictDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ShenyuDictDO.java @@ -17,9 +17,13 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.ShenyuDictDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +32,9 @@ /** * ShenyuDictDO. */ +@DynamicUpdate +@Entity +@Table(name = "shenyu_dict") public final class ShenyuDictDO extends BaseDO { private static final long serialVersionUID = -3968123108441795604L; @@ -55,6 +62,7 @@ public final class ShenyuDictDO extends BaseDO { /** * dict desc. */ + @Column(name = "\"desc\"") private String desc; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/TagDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/TagDO.java index b1a040134c00..395d142e5c5f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/TagDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/TagDO.java @@ -17,15 +17,24 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.TagDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.io.Serializable; import java.sql.Timestamp; import java.util.Objects; import java.util.Optional; +/** + * TagDO. + */ +@DynamicUpdate +@Entity +@Table(name = "tag") public final class TagDO extends BaseDO { private static final long serialVersionUID = -3968123108441095604L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/TagRelationDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/TagRelationDO.java index 32744b626ecb..8201f6bf82ad 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/TagRelationDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/TagRelationDO.java @@ -20,10 +20,20 @@ import java.sql.Timestamp; import java.util.Objects; import java.util.Optional; + +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.TagRelationDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; +/** + * TagRelationDO. + */ +@DynamicUpdate +@Entity +@Table(name = "tag_relation") public final class TagRelationDO extends BaseDO { private static final long serialVersionUID = -2968123108441795604L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/UserRoleDO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/UserRoleDO.java index b792311daff2..b5f5912f0d6f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/UserRoleDO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/UserRoleDO.java @@ -17,9 +17,12 @@ package org.apache.shenyu.admin.model.entity; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.model.dto.UserRoleDTO; import org.apache.shenyu.common.utils.UUIDUtils; +import org.hibernate.annotations.DynamicUpdate; import java.sql.Timestamp; import java.util.Objects; @@ -28,6 +31,9 @@ /** * The User Role Entity. */ +@DynamicUpdate +@Entity +@Table(name = "user_role") public final class UserRoleDO extends BaseDO { private static final long serialVersionUID = -6072114067735588550L; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/page/PageResultUtils.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/page/PageResultUtils.java index 98dc13656293..12607b5f37ae 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/page/PageResultUtils.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/page/PageResultUtils.java @@ -17,10 +17,15 @@ package org.apache.shenyu.admin.model.page; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; + import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.function.Function; import java.util.function.Supplier; +import java.util.stream.Collectors; /** * The type Page result utils. @@ -55,4 +60,49 @@ public static CommonPager result(final PageParameter pageParameter, final public static CommonPager result(final PageParameter pageParameter, final Supplier> listSupplier) { return new CommonPager<>(pageParameter, listSupplier.get()); } + + /** + * Result common pager. + * + * @param the type parameter + * @param the type parameter + * @param pageParameter the page parameter + * @param page the page + * @param mapper the mapper + * @return the common pager + */ + public static CommonPager result(final PageParameter pageParameter, final Page page, final Function mapper) { + return new CommonPager<>(new PageParameter(pageParameter.getCurrentPage(), pageParameter.getPageSize(), (int) page.getTotalElements()), page.get().map(mapper).collect(Collectors.toList())); + } + + /** + * Result common pager. + * + * @param the type parameter + * @param pageParameter the page parameter + * @param page the page + * @return the common pager + */ + public static CommonPager result(final PageParameter pageParameter, final Page page) { + return new CommonPager<>(new PageParameter(pageParameter.getCurrentPage(), pageParameter.getPageSize(), (int) page.getTotalElements()), page.getContent()); + } + + /** + * Of page request. + * + * @param pageParameter the page parameter + * @return the page request + */ + public static PageRequest of(final PageParameter pageParameter) { + return PageRequest.of(pageParameter.getCurrentPage() - 1, pageParameter.getPageSize()); + } + + /** + * of page request. + * @param pageCondition the page condition + * @return the page request + */ + public static PageRequest of(final PageCondition pageCondition) { + return PageRequest.of(pageCondition.getPageNum() - 1, pageCondition.getPageSize()); + } } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/DetailVO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/DetailVO.java index 656bfb3e2ccf..674eff578fd9 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/DetailVO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/DetailVO.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.model.vo; -import org.apache.shenyu.admin.mapper.DetailMapper; +import org.apache.shenyu.admin.jpa.repository.DetailRepository; import org.apache.shenyu.admin.model.entity.DetailDO; import org.apache.shenyu.admin.validation.annotation.Existed; @@ -29,7 +29,7 @@ */ public class DetailVO { - @Existed(provider = DetailMapper.class, nullOfIgnore = true, message = "detail is not existed") + @Existed(provider = DetailRepository.class, nullOfIgnore = true, message = "detail is not existed") private String id; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/DiscoveryVO.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/DiscoveryVO.java index 0378dcf4fcb5..2e743ff28e0f 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/DiscoveryVO.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/vo/DiscoveryVO.java @@ -19,7 +19,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.validation.annotation.Existed; import java.io.Serializable; @@ -74,7 +74,7 @@ public class DiscoveryVO implements Serializable { * namespaceId. */ @NotBlank - @Existed(message = "namespaceId is not existed", provider = NamespaceMapper.class) + @Existed(message = "namespaceId is not existed", provider = NamespaceRepository.class) private String namespaceId; /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/PageService.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/PageService.java index cc0c468e3729..4219aa8e3495 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/PageService.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/PageService.java @@ -22,6 +22,8 @@ import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageCondition; import org.apache.shenyu.admin.model.page.PageParameter; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import java.util.ArrayList; import java.util.List; @@ -40,6 +42,15 @@ public interface PageService { */ default PageInfo searchByPage(final PageCondition pageCondition) { doConditionPreProcessing(pageCondition.getCondition()); + if (useJpaPage()) { + Page page = jpaSearchByCondition(pageCondition); + com.github.pagehelper.Page phPage = new com.github.pagehelper.Page<>(); + phPage.addAll(page.getContent()); + phPage.setPageNum(pageCondition.getPageNum()); + phPage.setPageSize(pageCondition.getPageSize()); + phPage.setTotal(page.getTotalElements()); + return new PageInfo<>(phPage); + } PageHelper.startPage(pageCondition.getPageNum(), pageCondition.getPageSize()); return new PageInfo<>(searchByCondition(pageCondition.getCondition())); } @@ -75,5 +86,24 @@ default List searchByCondition(final Q condition) { default void doConditionPreProcessing(final Q condition) { // default is nothing, override condition. } - + + /** + * use jpa page. + * + * @see PageService#jpaSearchByCondition(PageCondition) + * @return true if use jpa page + */ + default boolean useJpaPage() { + return false; + } + + /** + * jpa search by condition. + * + * @param pageCondition page condition + * @return page + */ + default Page jpaSearchByCondition(final PageCondition pageCondition) { + return new PageImpl<>(new ArrayList<>()); + } } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AiProxyApiKeyServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AiProxyApiKeyServiceImpl.java index c3d771800ba9..eaa37d04688a 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AiProxyApiKeyServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AiProxyApiKeyServiceImpl.java @@ -17,16 +17,16 @@ package org.apache.shenyu.admin.service.impl; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.AiProxyApiKeyRepository; import org.apache.shenyu.admin.listener.DataChangedEvent; import org.apache.shenyu.admin.mapper.AiProxyApiKeyMapper; import org.apache.shenyu.admin.model.dto.ProxyApiKeyDTO; import org.apache.shenyu.admin.model.entity.ProxyApiKeyDO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; +import org.apache.shenyu.admin.model.page.PageResultUtils; import org.apache.shenyu.admin.model.query.ProxyApiKeyQuery; import org.apache.shenyu.admin.model.vo.ProxyApiKeyVO; import org.apache.shenyu.admin.service.AiProxyApiKeyService; @@ -45,11 +45,13 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; +import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; /** Implementation of AiProxyApiKeyService. */ @@ -60,15 +62,18 @@ public class AiProxyApiKeyServiceImpl implements AiProxyApiKeyService { private final AiProxyApiKeyMapper mapper; + private final AiProxyApiKeyRepository aiProxyApiKeyRepository; + private final ApplicationEventPublisher eventPublisher; private final AiProxyRealKeyResolver realKeyResolver; @Autowired public AiProxyApiKeyServiceImpl( - final AiProxyApiKeyMapper mapper, final ApplicationEventPublisher eventPublisher, + final AiProxyApiKeyMapper mapper, final AiProxyApiKeyRepository aiProxyApiKeyRepository, final ApplicationEventPublisher eventPublisher, final AiProxyRealKeyResolver realKeyResolver) { this.mapper = mapper; + this.aiProxyApiKeyRepository = aiProxyApiKeyRepository; this.eventPublisher = eventPublisher; this.realKeyResolver = realKeyResolver; } @@ -124,7 +129,8 @@ public int update(final ProxyApiKeyDTO dto) { @Override public ProxyApiKeyVO findById(final String id) { - final ProxyApiKeyVO vo = ProxyApiKeyTransfer.INSTANCE.mapToVO(mapper.selectById(id)); + Optional byId = aiProxyApiKeyRepository.findById(id); + final ProxyApiKeyVO vo = ProxyApiKeyTransfer.INSTANCE.mapToVO(byId.orElse(null)); if (Objects.nonNull(vo)) { final String real = realKeyResolver.resolveRealKey(vo.getSelectorId()).orElse(null); vo.setRealApiKey(real); @@ -134,7 +140,7 @@ public ProxyApiKeyVO findById(final String id) { @Override public List findByIds(final List ids) { - List voList = mapper.selectByIds(ids).stream() + List voList = aiProxyApiKeyRepository.findAllById(ids).stream() .map(ProxyApiKeyTransfer.INSTANCE::mapToVO) .collect(Collectors.toList()); // Populate realApiKey for each VO using batch resolver @@ -189,8 +195,11 @@ public String enabled(final List ids, final Boolean enabled) { public CommonPager listByPage(final ProxyApiKeyQuery query) { final int current = query.getPageParameter().getCurrentPage(); final int size = query.getPageParameter().getPageSize(); - PageHelper.startPage(current, size); - final List list = mapper.selectByCondition(query); + final Page page = aiProxyApiKeyRepository.pageByCondition(query, PageResultUtils.of(query.getPageParameter())); + + final List list = page.stream() + .map(ProxyApiKeyTransfer.INSTANCE::mapToVO) + .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(list)) { java.util.Set selectorIds = list.stream().map(ProxyApiKeyVO::getSelectorId) @@ -201,20 +210,22 @@ public CommonPager listByPage(final ProxyApiKeyQuery query) { } } - final PageInfo pageInfo = new PageInfo<>(list); - return new CommonPager<>(new PageParameter(current, size, (int) pageInfo.getTotal()), list); + return new CommonPager<>(new PageParameter(current, size, (int) page.getTotalElements()), list); } @Override public List searchByCondition(final ProxyApiKeyQuery condition) { - return mapper.selectByCondition(condition); + List proxyApiKeyDOS = aiProxyApiKeyRepository.selectByCondition(condition); + return proxyApiKeyDOS.stream() + .map(ProxyApiKeyTransfer.INSTANCE::mapToVO) + .collect(Collectors.toList()); } // sync & listAll @Override public List listAll() { - List all = mapper.selectAll(); + List all = aiProxyApiKeyRepository.findAll(); if (CollectionUtils.isEmpty(all)) { return java.util.Collections.emptyList(); } @@ -231,7 +242,7 @@ public List listAll() { @Override public void syncData() { // group by namespace and publish REFRESH respectively - List all = mapper.selectAll(); + List all = aiProxyApiKeyRepository.findAll(); if (CollectionUtils.isEmpty(all)) { return; } @@ -249,7 +260,7 @@ public void syncData() { @Override public void syncDataByNamespaceId(final String namespaceId) { final String target = NamespaceUtils.normalizeNamespace(namespaceId); - List all = mapper.selectAll(); + List all = aiProxyApiKeyRepository.findAll(); List list = Objects.isNull(all) ? java.util.Collections.emptyList() : all.stream() .filter(e -> StringUtils.equals(NamespaceUtils.normalizeNamespace(e.getNamespaceId()), target)) diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AiProxyConnectionServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AiProxyConnectionServiceImpl.java index 03775159538e..5642e7467c4e 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AiProxyConnectionServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AiProxyConnectionServiceImpl.java @@ -18,8 +18,8 @@ package org.apache.shenyu.admin.service.impl; import org.apache.commons.collections4.CollectionUtils; +import org.apache.shenyu.admin.jpa.repository.AiProxyApiKeyRepository; import org.apache.shenyu.admin.listener.DataChangedEvent; -import org.apache.shenyu.admin.mapper.AiProxyApiKeyMapper; import org.apache.shenyu.admin.model.entity.ProxyApiKeyDO; import org.apache.shenyu.admin.service.AiProxyConnectionService; import org.apache.shenyu.admin.service.support.AiProxyRealKeyResolver; @@ -45,15 +45,15 @@ public class AiProxyConnectionServiceImpl implements AiProxyConnectionService { private final AiProxyRealKeyResolver aiProxyRealKeyResolver; - private final AiProxyApiKeyMapper aiProxyApiKeyMapper; + private final AiProxyApiKeyRepository aiProxyApiKeyRepository; private final ApplicationEventPublisher eventPublisher; public AiProxyConnectionServiceImpl(final AiProxyRealKeyResolver aiProxyRealKeyResolver, - final AiProxyApiKeyMapper aiProxyApiKeyMapper, - final ApplicationEventPublisher eventPublisher) { + final AiProxyApiKeyRepository aiProxyApiKeyRepository, + final ApplicationEventPublisher eventPublisher) { this.aiProxyRealKeyResolver = aiProxyRealKeyResolver; - this.aiProxyApiKeyMapper = aiProxyApiKeyMapper; + this.aiProxyApiKeyRepository = aiProxyApiKeyRepository; this.eventPublisher = eventPublisher; } @@ -65,7 +65,7 @@ public void refreshApiKeysBySelectorId(final String selectorId) { LOG.info("[AiProxyConnectionService] invalidated real-key resolver for selectorId={}", selectorId); // 2. Find all proxy api keys associated with this selector - List keys = aiProxyApiKeyMapper.selectBySelectorId(selectorId); + List keys = aiProxyApiKeyRepository.findBySelectorId(selectorId); if (CollectionUtils.isEmpty(keys)) { LOG.info("[AiProxyConnectionService] no api keys found for selectorId={}, skipping refresh", selectorId); return; diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AlertDispatchServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AlertDispatchServiceImpl.java index 839e895ec3ab..f891e4f304d9 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AlertDispatchServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AlertDispatchServiceImpl.java @@ -20,7 +20,8 @@ import com.google.common.collect.Maps; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.apache.commons.lang3.StringUtils; -import org.apache.shenyu.admin.mapper.AlertReceiverMapper; +import org.apache.shenyu.admin.jpa.repository.AlertReceiverRepository; +import org.apache.shenyu.admin.transfer.AlertTransfer; import org.apache.shenyu.alert.AlertNotifyHandler; import org.apache.shenyu.alert.exception.AlertNoticeException; import org.apache.shenyu.common.dto.AlarmContent; @@ -51,15 +52,15 @@ public class AlertDispatchServiceImpl implements AlertDispatchService, Disposabl private static final Logger log = LoggerFactory.getLogger(AlertDispatchServiceImpl.class); private final Map alertNotifyHandlerMap; - - private final AlertReceiverMapper alertReceiverMapper; - + private final AtomicReference> alertReceiverReference; private final ThreadPoolExecutor workerExecutor; + + private final AlertReceiverRepository alertReceiverRepository; - public AlertDispatchServiceImpl(final List alertNotifyHandlerList, final AlertReceiverMapper alertReceiverMapper) { - this.alertReceiverMapper = alertReceiverMapper; + public AlertDispatchServiceImpl(final List alertNotifyHandlerList, final AlertReceiverRepository alertReceiverRepository) { + this.alertReceiverRepository = alertReceiverRepository; this.alertReceiverReference = new AtomicReference<>(); alertNotifyHandlerMap = Maps.newHashMapWithExpectedSize(alertNotifyHandlerList.size()); ThreadFactory threadFactory = new ThreadFactoryBuilder() @@ -148,7 +149,10 @@ private void sendNotify(final AlarmContent alert) { private List matchReceiverByRules(final AlarmContent alert) { List dtoList = alertReceiverReference.get(); if (Objects.isNull(dtoList)) { - dtoList = alertReceiverMapper.selectAll(); + dtoList = alertReceiverRepository.findAll() + .stream() + .map(AlertTransfer.INSTANCE::mapToAlertReceiverDTO) + .collect(Collectors.toList()); alertReceiverReference.set(dtoList); } return dtoList.stream().filter(item -> { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AlertReceiverServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AlertReceiverServiceImpl.java index 4793d3dad53e..8d81ddbdd420 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AlertReceiverServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AlertReceiverServiceImpl.java @@ -17,8 +17,7 @@ package org.apache.shenyu.admin.service.impl; -import org.apache.shenyu.admin.aspect.annotation.Pageable; -import org.apache.shenyu.admin.mapper.AlertReceiverMapper; +import org.apache.shenyu.admin.jpa.repository.AlertReceiverRepository; import org.apache.shenyu.admin.model.entity.AlertReceiverDO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageResultUtils; @@ -29,12 +28,13 @@ import org.apache.shenyu.alert.model.AlertReceiverDTO; import org.apache.shenyu.common.dto.AlarmContent; import org.apache.shenyu.common.utils.UUIDUtils; +import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import java.sql.Timestamp; import java.util.Date; import java.util.List; -import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -46,15 +46,14 @@ public class AlertReceiverServiceImpl implements AlertReceiverService { private static final String ALERT_TEST_TITLE = "Alarm Test"; private static final String ALERT_TEST_CONTENT = "test send msg! \n This is the test data. It is proved that it can be received successfully"; - - private final AlertReceiverMapper alertReceiverMapper; - + private final AlertDispatchService alertDispatchService; - public AlertReceiverServiceImpl(final AlertReceiverMapper alertReceiverMapper, - final AlertDispatchService alertDispatchService) { - this.alertReceiverMapper = alertReceiverMapper; + private final AlertReceiverRepository alertReceiverRepository; + + public AlertReceiverServiceImpl(final AlertDispatchService alertDispatchService, final AlertReceiverRepository alertReceiverRepository) { this.alertDispatchService = alertDispatchService; + this.alertReceiverRepository = alertReceiverRepository; } @Override @@ -64,46 +63,41 @@ public void addReceiver(final AlertReceiverDTO alertReceiverDTO) { Timestamp currentTime = new Timestamp(System.currentTimeMillis()); receiverDO.setDateCreated(currentTime); receiverDO.setDateUpdated(currentTime); - alertReceiverMapper.insert(receiverDO); + alertReceiverRepository.save(receiverDO); alertDispatchService.clearCache(); } @Override public void deleteReceiver(final List ids) { - alertReceiverMapper.deleteByIds(ids); + alertReceiverRepository.deleteAllByIdInBatch(ids); alertDispatchService.clearCache(); } @Override public void updateReceiver(final AlertReceiverDTO alertReceiverDTO) { AlertReceiverDO receiverDO = AlertTransfer.INSTANCE.mapToAlertReceiverDO(alertReceiverDTO); - alertReceiverMapper.updateByPrimaryKey(receiverDO); + alertReceiverRepository.save(receiverDO); alertDispatchService.clearCache(); } @Override public List getAll() { - return alertReceiverMapper.selectAll(); + return alertReceiverRepository.findAll() + .stream() + .map(AlertTransfer.INSTANCE::mapToAlertReceiverDTO) + .collect(Collectors.toList()); } @Override - @Pageable public CommonPager listByPage(final AlertReceiverQuery receiverQuery) { - return PageResultUtils.result(receiverQuery.getPageParameter(), - () -> alertReceiverMapper.selectByQuery(receiverQuery) - .stream() - .map(AlertTransfer.INSTANCE::mapToAlertReceiverDTO) - .collect(Collectors.toList())); + Page page = alertReceiverRepository.pageByDynamicConditions(receiverQuery, PageResultUtils.of(receiverQuery.getPageParameter())); + return PageResultUtils.result(receiverQuery.getPageParameter(), page, AlertTransfer.INSTANCE::mapToAlertReceiverDTO); } @Override public AlertReceiverDTO detail(final String id) { - AlertReceiverDO receiverDO = alertReceiverMapper.selectByPrimaryKey(id); - if (Objects.nonNull(receiverDO)) { - return AlertTransfer.INSTANCE.mapToAlertReceiverDTO(receiverDO); - } else { - return null; - } + Optional receiverDO = alertReceiverRepository.findById(id); + return receiverDO.map(AlertTransfer.INSTANCE::mapToAlertReceiverDTO).orElse(null); } @Override diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ApiServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ApiServiceImpl.java index 979e6d7e1ab9..ec2a96691b3d 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ApiServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ApiServiceImpl.java @@ -18,10 +18,10 @@ package org.apache.shenyu.admin.service.impl; import com.google.common.collect.Lists; -import java.util.ArrayList; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.disruptor.RegisterClientServerDisruptorPublisher; +import org.apache.shenyu.admin.jpa.repository.ApiRepository; import org.apache.shenyu.admin.mapper.ApiMapper; import org.apache.shenyu.admin.mapper.TagMapper; import org.apache.shenyu.admin.mapper.TagRelationMapper; @@ -40,17 +40,17 @@ import org.apache.shenyu.admin.model.vo.RuleVO; import org.apache.shenyu.admin.model.vo.TagVO; import org.apache.shenyu.admin.service.ApiService; -import org.apache.shenyu.common.enums.ApiSourceEnum; -import org.apache.shenyu.common.enums.PluginEnum; -import org.apache.shenyu.common.utils.JsonUtils; -import org.apache.shenyu.common.utils.ListUtil; import org.apache.shenyu.admin.service.MetaDataService; import org.apache.shenyu.admin.service.RuleService; import org.apache.shenyu.admin.service.SelectorService; import org.apache.shenyu.admin.utils.ShenyuResultMessage; import org.apache.shenyu.common.constant.AdminConstants; import org.apache.shenyu.common.dto.RuleData; +import org.apache.shenyu.common.enums.ApiSourceEnum; +import org.apache.shenyu.common.enums.PluginEnum; import org.apache.shenyu.common.utils.GsonUtils; +import org.apache.shenyu.common.utils.JsonUtils; +import org.apache.shenyu.common.utils.ListUtil; import org.apache.shenyu.common.utils.UUIDUtils; import org.apache.shenyu.register.common.dto.ApiDocRegisterDTO; import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO; @@ -58,6 +58,7 @@ import org.springframework.transaction.annotation.Transactional; import java.sql.Timestamp; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -78,6 +79,8 @@ public class ApiServiceImpl implements ApiService { private final ApiMapper apiMapper; + private final ApiRepository apiRepository; + private final TagRelationMapper tagRelationMapper; private final TagMapper tagMapper; @@ -86,12 +89,14 @@ public ApiServiceImpl(final SelectorService selectorService, final RuleService ruleService, final MetaDataService metaDataService, final ApiMapper apiMapper, + final ApiRepository apiRepository, final TagRelationMapper tagRelationMapper, final TagMapper tagMapper) { this.selectorService = selectorService; this.ruleService = ruleService; this.metaDataService = metaDataService; this.apiMapper = apiMapper; + this.apiRepository = apiRepository; this.tagRelationMapper = tagRelationMapper; this.tagMapper = tagMapper; } @@ -234,7 +239,7 @@ public String delete(final List ids) { @Override public ApiVO findById(final String id) { - return Optional.ofNullable(apiMapper.selectByPrimaryKey(id)).map(item -> { + return apiRepository.findById(id).map(item -> { List tagRelations = tagRelationMapper.selectByQuery(TagRelationQuery.builder().apiId(item.getId()).build()); List tagIds = tagRelations.stream().map(TagRelationDO::getTagId).collect(Collectors.toList()); List tagVOs = Lists.newArrayList(); @@ -287,7 +292,7 @@ public int deleteByApiPathHttpMethodRpcType(final String apiPath, final Integer @Override public String offlineByContextPath(final String contextPath) { - apiMapper.updateOfflineByContextPath(contextPath); + apiRepository.updateOfflineByContextPath(contextPath); return ShenyuResultMessage.SUCCESS; } } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AppAuthServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AppAuthServiceImpl.java index 28bec4274480..190ea5c3e0e2 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AppAuthServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/AppAuthServiceImpl.java @@ -21,6 +21,9 @@ import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.AppAuthRepository; +import org.apache.shenyu.admin.jpa.repository.AuthParamRepository; +import org.apache.shenyu.admin.jpa.repository.AuthPathRepository; import org.apache.shenyu.admin.listener.DataChangedEvent; import org.apache.shenyu.admin.mapper.AppAuthMapper; import org.apache.shenyu.admin.mapper.AuthParamMapper; @@ -35,6 +38,7 @@ import org.apache.shenyu.admin.model.entity.AuthPathDO; import org.apache.shenyu.admin.model.entity.BaseDO; import org.apache.shenyu.admin.model.page.CommonPager; +import org.apache.shenyu.admin.model.page.PageCondition; import org.apache.shenyu.admin.model.page.PageResultUtils; import org.apache.shenyu.admin.model.query.AppAuthQuery; import org.apache.shenyu.admin.model.result.ConfigImportResult; @@ -56,6 +60,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationEventPublisher; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -78,26 +85,44 @@ public class AppAuthServiceImpl implements AppAuthService { private final AppAuthMapper appAuthMapper; + private final AppAuthRepository appAuthRepository; + private final ApplicationEventPublisher eventPublisher; private final AuthParamMapper authParamMapper; + private final AuthParamRepository authParamRepository; + private final AuthPathMapper authPathMapper; + private final AuthPathRepository authPathRepository; + public AppAuthServiceImpl(final AppAuthMapper appAuthMapper, + final AppAuthRepository appAuthRepository, final ApplicationEventPublisher eventPublisher, final AuthParamMapper authParamMapper, - final AuthPathMapper authPathMapper) { + final AuthParamRepository authParamRepository, + final AuthPathMapper authPathMapper, + final AuthPathRepository authPathRepository) { this.appAuthMapper = appAuthMapper; + this.appAuthRepository = appAuthRepository; this.eventPublisher = eventPublisher; this.authParamMapper = authParamMapper; + this.authParamRepository = authParamRepository; this.authPathMapper = authPathMapper; + this.authPathRepository = authPathRepository; } @Override - public List searchByCondition(final AppAuthQuery condition) { - final List appAuthDOS = appAuthMapper.selectByCondition(condition); - return appAuthDOS.stream().map(AppAuthTransfer.INSTANCE::mapToVO).toList(); + public boolean useJpaPage() { + return true; + } + + @Override + public Page jpaSearchByCondition(final PageCondition pageCondition) { + PageRequest pageRequest = PageResultUtils.of(pageCondition); + Page page = appAuthRepository.selectByQuery(pageCondition.getCondition(), pageRequest); + return new PageImpl<>(page.stream().map(AppAuthTransfer.INSTANCE::mapToVO).toList(), pageRequest, page.getTotalElements()); } @Override @@ -238,7 +263,7 @@ public ShenyuAdminResult updateDetailPath(final AuthPathWarpDTO authPathWarpDTO) @Override public ShenyuAdminResult syncData() { - List appAuthDOList = appAuthMapper.selectAll(); + List appAuthDOList = appAuthRepository.findAll(); return syncData(appAuthDOList); } @@ -269,7 +294,7 @@ public ShenyuAdminResult syncData(final List appAuthDOList) { @Override public ShenyuAdminResult syncDataByNamespaceId(final String namespaceId) { - List appAuthDOList = appAuthMapper.selectAllByNamespaceId(namespaceId); + List appAuthDOList = appAuthRepository.findByNamespaceId(namespaceId); return syncData(appAuthDOList); } @@ -523,8 +548,8 @@ public String opened(final List ids, final Boolean enabled) { */ @Override public AppAuthVO findById(final String id) { - AppAuthVO appAuthVO = AppAuthTransfer.INSTANCE.mapToVO(appAuthMapper.selectById(id)); - List authParamDOList = authParamMapper.findByAuthId(id); + AppAuthVO appAuthVO = AppAuthTransfer.INSTANCE.mapToVO(appAuthRepository.findById(id).orElse(null)); + List authParamDOList = authParamRepository.findByAuthId(id); if (CollectionUtils.isNotEmpty(authParamDOList)) { appAuthVO.setAuthParamList(authParamDOList.stream().map(authParamDO -> { AuthParamVO vo = new AuthParamVO(); @@ -539,7 +564,7 @@ public AppAuthVO findById(final String id) { @Override public List detailPath(final String authId) { - List authPathDOList = authPathMapper.findByAuthId(authId); + List authPathDOList = authPathRepository.findByAuthId(authId); if (CollectionUtils.isEmpty(authPathDOList)) { return new ArrayList<>(); } @@ -563,17 +588,13 @@ public List detailPath(final String authId) { */ @Override public CommonPager listByPage(final AppAuthQuery appAuthQuery) { - return PageResultUtils.result(appAuthQuery.getPageParameter(), - () -> appAuthMapper.countByQuery(appAuthQuery), - () -> appAuthMapper.selectByQuery(appAuthQuery) - .stream() - .map(AppAuthTransfer.INSTANCE::mapToVO) - .collect(Collectors.toList())); + Page page = appAuthRepository.selectByQuery(appAuthQuery, PageResultUtils.of(appAuthQuery.getPageParameter())); + return PageResultUtils.result(appAuthQuery.getPageParameter(), page, AppAuthTransfer.INSTANCE::mapToVO); } @Override public List listAll() { - List appAuthDOList = appAuthMapper.selectAll(); + List appAuthDOList = appAuthRepository.findAll(); if (CollectionUtils.isEmpty(appAuthDOList)) { return new ArrayList<>(); } @@ -590,7 +611,7 @@ public List listAll() { @Override public List listAllData() { - List appAuthDOList = appAuthMapper.selectAll(); + List appAuthDOList = appAuthRepository.findAll(); if (CollectionUtils.isEmpty(appAuthDOList)) { return new ArrayList<>(); } @@ -611,7 +632,7 @@ public List listAllData() { @Override public List listAllDataByNamespace(final String namespace) { - List appAuthDOList = appAuthMapper.selectAllByNamespaceId(namespace); + List appAuthDOList = appAuthRepository.findByNamespaceId(namespace); if (CollectionUtils.isEmpty(appAuthDOList)) { return new ArrayList<>(); } @@ -630,13 +651,14 @@ public List listAllDataByNamespace(final String namespace) { } @Override + @Transactional(rollbackFor = Exception.class) public ShenyuAdminResult updateAppSecretByAppKey(final String appKey, final String appSecret) { - return ShenyuAdminResult.success(appAuthMapper.updateAppSecretByAppKey(appKey, appSecret)); + return ShenyuAdminResult.success(appAuthRepository.updateAppSecretByAppKey(appKey, appSecret)); } @Override public AppAuthDO findByAppKey(final String appKey) { - return appAuthMapper.findByAppKey(appKey); + return appAuthRepository.findByAppKey(appKey).orElse(null); } private AppAuthData buildByEntity(final AppAuthDO appAuthDO) { @@ -647,7 +669,7 @@ private AppAuthData buildByEntity(final AppAuthDO appAuthDO) { .enabled(appAuthDO.getEnabled()) .namespaceId(appAuthDO.getNamespaceId()) .build(); - List authParamDOList = authParamMapper.findByAuthId(appAuthDO.getId()); + List authParamDOList = authParamRepository.findByAuthId(appAuthDO.getId()); if (CollectionUtils.isNotEmpty(authParamDOList)) { data.setParamDataList( authParamDOList.stream() @@ -655,7 +677,7 @@ private AppAuthData buildByEntity(final AppAuthDO appAuthDO) { .collect(Collectors.toList()) ); } - List authPathDOList = authPathMapper.findByAuthId(appAuthDO.getId()); + List authPathDOList = authPathRepository.findByAuthId(appAuthDO.getId()); if (CollectionUtils.isNotEmpty(authPathDOList)) { data.setPathDataList( authPathDOList.stream() @@ -690,7 +712,7 @@ private AppAuthData buildByEntityWithParamAndPath(final AppAuthDO appAuthDO, fin */ private Map> prepareAuthParamData(final List authIds) { - List authPathDOList = authParamMapper.findByAuthIdList(authIds); + List authPathDOList = authParamRepository.findByAuthIdIn(authIds); return Optional.ofNullable(authPathDOList).orElseGet(ArrayList::new) .stream().collect(Collectors.toMap(AuthParamDO::getAuthId, data -> { @@ -711,7 +733,7 @@ private Map> prepareAuthParamData(final List */ private Map> prepareAuthPathData(final List authIds) { - List authPathDOList = authPathMapper.findByAuthIdList(authIds); + List authPathDOList = authPathRepository.findByAuthIdIn(authIds); return Optional.ofNullable(authPathDOList).orElseGet(ArrayList::new) .stream().collect(Collectors.toMap(AuthPathDO::getAuthId, data -> { @@ -732,7 +754,7 @@ private Map> prepareAuthPathData(final List a */ private Map> prepareAuthParamVO(final List authIds) { - List authPathDOList = authParamMapper.findByAuthIdList(authIds); + List authPathDOList = authParamRepository.findByAuthIdIn(authIds); return Optional.ofNullable(authPathDOList).orElseGet(ArrayList::new) .stream().collect(Collectors.toMap(AuthParamDO::getAuthId, @@ -755,7 +777,7 @@ private Map> prepareAuthParamVO(final List aut */ private Map> prepareAuthPathVO(final List authIds) { - List authPathDOList = authPathMapper.findByAuthIdList(authIds); + List authPathDOList = authPathRepository.findByAuthIdIn(authIds); return Optional.ofNullable(authPathDOList).orElseGet(ArrayList::new) .stream().collect(Collectors.toMap(AuthPathDO::getAuthId, data -> { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DashboardUserServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DashboardUserServiceImpl.java index 18b41cd7c0cb..c7b3e91bc0fc 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DashboardUserServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DashboardUserServiceImpl.java @@ -25,6 +25,9 @@ import org.apache.shenyu.admin.config.properties.JwtProperties; import org.apache.shenyu.admin.config.properties.LdapProperties; import org.apache.shenyu.admin.config.properties.SecretProperties; +import org.apache.shenyu.admin.jpa.repository.DashboardUserRepository; +import org.apache.shenyu.admin.jpa.repository.RoleRepository; +import org.apache.shenyu.admin.jpa.repository.UserRoleRepository; import org.apache.shenyu.admin.mapper.DashboardUserMapper; import org.apache.shenyu.admin.mapper.RoleMapper; import org.apache.shenyu.admin.mapper.UserRoleMapper; @@ -57,6 +60,7 @@ import org.apache.shenyu.common.utils.ListUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.data.domain.Page; import org.springframework.ldap.NameNotFoundException; import org.springframework.ldap.core.LdapTemplate; import org.springframework.ldap.support.LdapEncoder; @@ -79,10 +83,16 @@ public class DashboardUserServiceImpl implements DashboardUserService { private final DashboardUserMapper dashboardUserMapper; + private final DashboardUserRepository dashboardUserRepository; + private final UserRoleMapper userRoleMapper; + private final UserRoleRepository userRoleRepository; + private final RoleMapper roleMapper; + private final RoleRepository roleRepository; + @Nullable private final LdapProperties ldapProperties; @@ -100,8 +110,11 @@ public class DashboardUserServiceImpl implements DashboardUserService { private final NamespaceUserService namespaceUserService; public DashboardUserServiceImpl(final DashboardUserMapper dashboardUserMapper, + final DashboardUserRepository dashboardUserRepository, final UserRoleMapper userRoleMapper, + final UserRoleRepository userRoleRepository, final RoleMapper roleMapper, + final RoleRepository roleRepository, @Nullable final LdapProperties ldapProperties, @Nullable final LdapTemplate ldapTemplate, final JwtProperties jwtProperties, @@ -110,8 +123,11 @@ public DashboardUserServiceImpl(final DashboardUserMapper dashboardUserMapper, final SecretProperties secretProperties, final NamespaceUserService namespaceUserService) { this.dashboardUserMapper = dashboardUserMapper; + this.dashboardUserRepository = dashboardUserRepository; this.userRoleMapper = userRoleMapper; + this.userRoleRepository = userRoleRepository; this.roleMapper = roleMapper; + this.roleRepository = roleRepository; this.ldapProperties = ldapProperties; this.ldapTemplate = ldapTemplate; this.jwtProperties = jwtProperties; @@ -214,14 +230,14 @@ public int delete(final Set ids) { @Override public DashboardUserEditVO findById(final String id) { - DashboardUserVO dashboardUserVO = DashboardUserVO.buildDashboardUserVO(dashboardUserMapper.selectById(id)); + DashboardUserVO dashboardUserVO = DashboardUserVO.buildDashboardUserVO(dashboardUserRepository.findById(id).orElse(null)); - Set roleIdSet = userRoleMapper.findByUserId(id) + Set roleIdSet = userRoleRepository.findByUserId(id) .stream() .map(UserRoleDO::getRoleId) .collect(Collectors.toSet()); - List allRoleDOList = roleMapper.selectAll(); + List allRoleDOList = roleRepository.findAll(); List allRoles = ListUtil.map(allRoleDOList, RoleVO::buildRoleVO); List roleDOList = allRoleDOList.stream() @@ -241,7 +257,7 @@ public DashboardUserEditVO findById(final String id) { */ @Override public DashboardUserVO findByQuery(final String userName, final String password) { - return DashboardUserVO.buildDashboardUserVO(dashboardUserMapper.findByQuery(userName, password)); + return DashboardUserVO.buildDashboardUserVO(dashboardUserRepository.findByUserNameAndPassword(userName, password).orElse(null)); } /** @@ -252,7 +268,7 @@ public DashboardUserVO findByQuery(final String userName, final String password) */ @Override public DashboardUserVO findByUserName(final String userName) { - return DashboardUserVO.buildDashboardUserVO(dashboardUserMapper.selectByUserName(userName)); + return DashboardUserVO.buildDashboardUserVO(dashboardUserRepository.findByUserName(userName).orElse(null)); } /** @@ -263,9 +279,8 @@ public DashboardUserVO findByUserName(final String userName) { */ @Override public CommonPager listByPage(final DashboardUserQuery dashboardUserQuery) { - return PageResultUtils.result(dashboardUserQuery.getPageParameter(), - () -> dashboardUserMapper.countByQuery(dashboardUserQuery), - () -> ListUtil.map(dashboardUserMapper.selectByQuery(dashboardUserQuery), DashboardUserVO::buildDashboardUserVO)); + Page page = dashboardUserRepository.findByQuery(dashboardUserQuery.getUserName(), PageResultUtils.of(dashboardUserQuery.getPageParameter())); + return PageResultUtils.result(dashboardUserQuery.getPageParameter(), page, DashboardUserVO::buildDashboardUserVO); } /** @@ -336,7 +351,7 @@ public int modifyPassword(final DashboardUserModifyPasswordDTO dashboardUserModi @Override public boolean checkUserPassword(final String userId) { - final DashboardUserDO userDO = dashboardUserMapper.selectById(userId); + final DashboardUserDO userDO = dashboardUserRepository.findById(userId).orElse(null); WebI18nAssert.isTrue(!Objects.equals(userDO.getDateCreated(), userDO.getDateUpdated()), FailI18nMessage.PASSWORD_IS_DEFAULT); @@ -357,7 +372,7 @@ private DashboardUserVO loginByLdap(final String userName, final String password if (Objects.nonNull(ldapTemplate) && ldapTemplate.authenticate(searchBase, filter, password)) { dashboardUserVO = findByUserName(userName); if (Objects.isNull(dashboardUserVO)) { - RoleDO role = roleMapper.findByRoleName("default"); + RoleDO role = roleRepository.findByRoleName("default").orElse(null); DashboardUserDTO dashboardUserDTO = DashboardUserDTO.builder() .userName(userName) .password(DigestUtils.sha512Hex(password)) @@ -392,7 +407,7 @@ private void bindUserRole(final String userId, final List roleIds) { if (CollectionUtils.isEmpty(roleIds) || StringUtils.isBlank(userId)) { return; } - userRoleMapper.insertBatch(roleIds.stream() + userRoleRepository.saveAll(roleIds.stream() .map(roleId -> UserRoleDO.buildUserRoleDO(UserRoleDTO.builder() .userId(userId) .roleId(roleId) diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DataPermissionServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DataPermissionServiceImpl.java index e0781a26d72c..7cd01cfa2391 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DataPermissionServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DataPermissionServiceImpl.java @@ -19,6 +19,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.DataPermissionRepository; import org.apache.shenyu.admin.mapper.DataPermissionMapper; import org.apache.shenyu.admin.mapper.NamespaceUserRelMapper; import org.apache.shenyu.admin.mapper.RuleMapper; @@ -60,20 +61,24 @@ */ @Service public class DataPermissionServiceImpl implements DataPermissionService { - + private final DataPermissionMapper dataPermissionMapper; - + + private final DataPermissionRepository dataPermissionRepository; + private final RuleMapper ruleMapper; - + private final SelectorMapper selectorMapper; - + private final NamespaceUserRelMapper namespaceUserRelMapper; - + public DataPermissionServiceImpl(final DataPermissionMapper dataPermissionMapper, + final DataPermissionRepository dataPermissionRepository, final RuleMapper ruleMapper, final SelectorMapper selectorMapper, final NamespaceUserRelMapper namespaceUserRelMapper) { this.dataPermissionMapper = dataPermissionMapper; + this.dataPermissionRepository = dataPermissionRepository; this.ruleMapper = ruleMapper; this.selectorMapper = selectorMapper; this.namespaceUserRelMapper = namespaceUserRelMapper; @@ -87,9 +92,9 @@ public DataPermissionServiceImpl(final DataPermissionMapper dataPermissionMapper */ @Override public List getUserDataPermissionList(final String userId) { - return dataPermissionMapper.listByUserId(userId); + return dataPermissionRepository.findByUserId(userId); } - + /** * get data permission by user id. * diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DetailServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DetailServiceImpl.java index 0097eec829e1..292a7fbfdc3e 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DetailServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DetailServiceImpl.java @@ -20,6 +20,7 @@ import java.util.Objects; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.Pageable; +import org.apache.shenyu.admin.jpa.repository.DetailRepository; import org.apache.shenyu.admin.mapper.DetailMapper; import org.apache.shenyu.admin.model.dto.DetailDTO; import org.apache.shenyu.admin.model.entity.DetailDO; @@ -40,8 +41,11 @@ public class DetailServiceImpl implements DetailService { private final DetailMapper detailMapper; - public DetailServiceImpl(final DetailMapper detailMapper) { + private final DetailRepository detailRepository; + + public DetailServiceImpl(final DetailMapper detailMapper, final DetailRepository detailRepository) { this.detailMapper = detailMapper; + this.detailRepository = detailRepository; } @Override @@ -61,7 +65,7 @@ public int deleteBatch(final List ids) { @Override public DetailVO findById(final String id) { - DetailDO detailDO = detailMapper.selectByPrimaryKey(id); + DetailDO detailDO = detailRepository.findById(id).orElse(null); DetailVO.DetailVOBuilder builder = DetailVO.builder(); if (Objects.nonNull(detailDO)) { builder.id(detailDO.getId()) diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryServiceImpl.java index af1d4b2c11d8..fbf067eb1730 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryServiceImpl.java @@ -42,6 +42,7 @@ import org.apache.shenyu.admin.model.vo.DiscoveryHandlerVO; import org.apache.shenyu.admin.model.vo.DiscoveryRelVO; import org.apache.shenyu.admin.model.vo.DiscoveryVO; +import org.apache.shenyu.admin.jpa.repository.DiscoveryRepository; import org.apache.shenyu.admin.service.DiscoveryService; import org.apache.shenyu.admin.service.SelectorService; import org.apache.shenyu.admin.service.configs.ConfigsImportContext; @@ -72,6 +73,8 @@ public class DiscoveryServiceImpl implements DiscoveryService { private final DiscoveryMapper discoveryMapper; + private final DiscoveryRepository discoveryRepository; + private final ProxySelectorMapper proxySelectorMapper; private final DiscoveryHandlerMapper discoveryHandlerMapper; @@ -85,6 +88,7 @@ public class DiscoveryServiceImpl implements DiscoveryService { private final DiscoveryProcessorHolder discoveryProcessorHolder; public DiscoveryServiceImpl(final DiscoveryMapper discoveryMapper, + final DiscoveryRepository discoveryRepository, final ProxySelectorMapper proxySelectorMapper, final DiscoveryRelMapper discoveryRelMapper, final DiscoveryHandlerMapper discoveryHandlerMapper, @@ -92,6 +96,7 @@ public DiscoveryServiceImpl(final DiscoveryMapper discoveryMapper, final SelectorMapper selectorMapper, final DiscoveryProcessorHolder discoveryProcessorHolder) { this.discoveryMapper = discoveryMapper; + this.discoveryRepository = discoveryRepository; this.discoveryProcessorHolder = discoveryProcessorHolder; this.proxySelectorMapper = proxySelectorMapper; this.discoveryRelMapper = discoveryRelMapper; @@ -272,7 +277,7 @@ public void syncData(final List discoveryDOS) { @Transactional(rollbackFor = Exception.class) public void syncData() { LOG.info("shenyu DiscoveryService sync db "); - List discoveryDOS = discoveryMapper.selectAll(); + List discoveryDOS = discoveryRepository.findAll(); syncData(discoveryDOS); } @@ -280,7 +285,7 @@ public void syncData() { @Transactional(rollbackFor = Exception.class) public void syncDataByNamespaceId(final String namespaceId) { LOG.info("shenyu DiscoveryService sync db "); - List discoveryDOS = discoveryMapper.selectAllByNamespaceId(namespaceId); + List discoveryDOS = discoveryRepository.findByNamespaceId(namespaceId); syncData(discoveryDOS); } @@ -296,8 +301,8 @@ public List listAllData() { .stream() .map(DiscoveryTransfer.INSTANCE::mapToVo) .collect(Collectors.toMap(DiscoveryRelVO::getDiscoveryHandlerId, x -> x)); - return discoveryMapper - .selectAll() + return discoveryRepository + .findAll() .stream() .map(x -> { DiscoveryVO discoveryVO = DiscoveryTransfer.INSTANCE.mapToVo(x); @@ -314,8 +319,8 @@ public List listAllData() { @Override public List listAllDataByNamespaceId(final String namespaceId) { - List discoveryDOList = discoveryMapper - .selectAllByNamespaceId(namespaceId); + List discoveryDOList = discoveryRepository + .findByNamespaceId(namespaceId); if (CollectionUtils.isEmpty(discoveryDOList)) { return Lists.newArrayList(); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryUpstreamServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryUpstreamServiceImpl.java index b626f314fa31..383f8c1a9647 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryUpstreamServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/DiscoveryUpstreamServiceImpl.java @@ -21,6 +21,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.shenyu.admin.discovery.DiscoveryProcessor; import org.apache.shenyu.admin.discovery.DiscoveryProcessorHolder; +import org.apache.shenyu.admin.jpa.repository.DiscoveryUpstreamRepository; import org.apache.shenyu.admin.mapper.DiscoveryHandlerMapper; import org.apache.shenyu.admin.mapper.DiscoveryMapper; import org.apache.shenyu.admin.mapper.DiscoveryRelMapper; @@ -60,6 +61,8 @@ public class DiscoveryUpstreamServiceImpl implements DiscoveryUpstreamService { private final DiscoveryUpstreamMapper discoveryUpstreamMapper; + private final DiscoveryUpstreamRepository discoveryUpstreamRepository; + private final DiscoveryHandlerMapper discoveryHandlerMapper; private final DiscoveryRelMapper discoveryRelMapper; @@ -75,6 +78,7 @@ public class DiscoveryUpstreamServiceImpl implements DiscoveryUpstreamService { private final DiscoveryProcessorHolder discoveryProcessorHolder; public DiscoveryUpstreamServiceImpl(final DiscoveryUpstreamMapper discoveryUpstreamMapper, + final DiscoveryUpstreamRepository discoveryUpstreamRepository, final DiscoveryHandlerMapper discoveryHandlerMapper, final ProxySelectorMapper proxySelectorMapper, final DiscoveryMapper discoveryMapper, @@ -83,6 +87,7 @@ public DiscoveryUpstreamServiceImpl(final DiscoveryUpstreamMapper discoveryUpstr final PluginMapper pluginMapper, final DiscoveryProcessorHolder discoveryProcessorHolder) { this.discoveryUpstreamMapper = discoveryUpstreamMapper; + this.discoveryUpstreamRepository = discoveryUpstreamRepository; this.discoveryProcessorHolder = discoveryProcessorHolder; this.discoveryHandlerMapper = discoveryHandlerMapper; this.discoveryMapper = discoveryMapper; @@ -172,17 +177,17 @@ public List listAll() { @Override public List listAllData() { - return discoveryUpstreamMapper - .selectAll() + return discoveryUpstreamRepository + .findAll() .stream() .map(DiscoveryTransfer.INSTANCE::mapToVo) .collect(Collectors.toList()); } - + @Override public List listAllDataByNamespaceId(final String namespaceId) { - return discoveryUpstreamMapper - .selectByNamespaceId(namespaceId) + return discoveryUpstreamRepository + .findByNamespaceId(namespaceId) .stream() .map(DiscoveryTransfer.INSTANCE::mapToVo) .collect(Collectors.toList()); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/FieldServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/FieldServiceImpl.java index 28b67bf27135..319cd9ce4e75 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/FieldServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/FieldServiceImpl.java @@ -20,6 +20,7 @@ import java.util.Objects; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.Pageable; +import org.apache.shenyu.admin.jpa.repository.FieldRepository; import org.apache.shenyu.admin.mapper.FieldMapper; import org.apache.shenyu.admin.model.dto.FieldDTO; import org.apache.shenyu.admin.model.entity.FieldDO; @@ -33,15 +34,17 @@ import java.sql.Timestamp; import java.util.List; -import java.util.stream.Collectors; @Service public class FieldServiceImpl implements FieldService { private final FieldMapper fieldMapper; - public FieldServiceImpl(final FieldMapper fieldMapper) { + private final FieldRepository fieldRepository; + + public FieldServiceImpl(final FieldMapper fieldMapper, final FieldRepository fieldRepository) { this.fieldMapper = fieldMapper; + this.fieldRepository = fieldRepository; } @Override @@ -61,7 +64,7 @@ public int deleteBatch(final List ids) { @Override public FieldVO findById(final String id) { - FieldDO fieldDO = fieldMapper.selectByPrimaryKey(id); + FieldDO fieldDO = fieldRepository.findById(id).orElse(null); FieldVO.FieldVOBuilder builder = FieldVO.builder(); if (Objects.nonNull(fieldDO)) { builder.id(fieldDO.getId()) @@ -81,7 +84,7 @@ public FieldVO findById(final String id) { @Pageable public CommonPager listByPage(final FieldQuery fieldQuery) { List list = fieldMapper.selectByQuery(fieldQuery); - return PageResultUtils.result(fieldQuery.getPageParameter(), () -> list.stream().map(FieldVO::buildFieldVO).collect(Collectors.toList())); + return PageResultUtils.result(fieldQuery.getPageParameter(), () -> list.stream().map(FieldVO::buildFieldVO).toList()); } private int create(final FieldDTO fieldDTO) { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/InstanceInfoServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/InstanceInfoServiceImpl.java index ea9cda2fa244..667f684d4b3c 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/InstanceInfoServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/InstanceInfoServiceImpl.java @@ -17,6 +17,7 @@ package org.apache.shenyu.admin.service.impl; +import org.apache.shenyu.admin.jpa.repository.InstanceInfoRepository; import org.apache.shenyu.admin.mapper.InstanceInfoMapper; import org.apache.shenyu.admin.model.entity.InstanceInfoDO; import org.apache.shenyu.admin.model.page.CommonPager; @@ -44,8 +45,11 @@ public class InstanceInfoServiceImpl implements InstanceInfoService { private final InstanceInfoMapper instanceInfoMapper; - public InstanceInfoServiceImpl(final InstanceInfoMapper instanceInfoMapper) { + private final InstanceInfoRepository instanceInfoRepository; + + public InstanceInfoServiceImpl(final InstanceInfoMapper instanceInfoMapper, final InstanceInfoRepository instanceInfoRepository) { this.instanceInfoMapper = instanceInfoMapper; + this.instanceInfoRepository = instanceInfoRepository; } @Override @@ -85,12 +89,12 @@ public CommonPager listByPage(final InstanceQuery instanceQuery) @Override public List list() { - return this.buildInstanceInfoVO(instanceInfoMapper.selectAll()); + return this.buildInstanceInfoVO(instanceInfoRepository.findAll()); } @Override public InstanceInfoVO findById(final String id) { - return null; + return instanceInfoRepository.findById(id).map(this::buildInstanceInfoVO).orElse(null); } private List buildInstanceInfoVO(final List instanceInfoDOList) { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MetaDataServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MetaDataServiceImpl.java index ae52536cb155..07c62138732b 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MetaDataServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MetaDataServiceImpl.java @@ -21,6 +21,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.Pageable; +import org.apache.shenyu.admin.jpa.repository.MetaDataRepository; import org.apache.shenyu.admin.listener.DataChangedEvent; import org.apache.shenyu.admin.mapper.MetaDataMapper; import org.apache.shenyu.admin.model.dto.MetaDataDTO; @@ -68,14 +69,18 @@ public class MetaDataServiceImpl implements MetaDataService { private final MetaDataMapper metaDataMapper; + private final MetaDataRepository metaDataRepository; + private final ApplicationEventPublisher eventPublisher; private final MetaDataEventPublisher publisher; public MetaDataServiceImpl(final MetaDataMapper metaDataMapper, + final MetaDataRepository metaDataRepository, final ApplicationEventPublisher eventPublisher, final MetaDataEventPublisher publisher) { this.metaDataMapper = metaDataMapper; + this.metaDataRepository = metaDataRepository; this.eventPublisher = eventPublisher; this.publisher = publisher; } @@ -156,7 +161,7 @@ public void syncDataByNamespaceId(final String namespaceId) { @Override public MetaDataVO findById(final String id) { - return Optional.ofNullable(MetaDataTransfer.INSTANCE.mapToVO(metaDataMapper.selectById(id))).orElseGet(MetaDataVO::new); + return Optional.ofNullable(MetaDataTransfer.INSTANCE.mapToVO(metaDataRepository.findById(id).orElse(null))).orElseGet(MetaDataVO::new); } @Override @@ -170,7 +175,7 @@ public CommonPager listByPage(final MetaDataQuery metaDataQuery) { @Override public List findAll() { - return MetaDataTransfer.INSTANCE.mapToVOList(metaDataMapper.selectAll()); + return MetaDataTransfer.INSTANCE.mapToVOList(metaDataRepository.findAll()); } @Override @@ -180,27 +185,27 @@ public Map> findAllGroup() { @Override public List listAll() { - return ListUtil.map(metaDataMapper.selectAll(), MetaDataTransfer.INSTANCE::mapToData); + return ListUtil.map(metaDataRepository.findAll(), MetaDataTransfer.INSTANCE::mapToData); } @Override public List listAllData() { - return ListUtil.map(metaDataMapper.selectAll(), MetaDataTransfer.INSTANCE::mapToVO); + return ListUtil.map(metaDataRepository.findAll(), MetaDataTransfer.INSTANCE::mapToVO); } - + @Override public List listAllDataByNamespaceId(final String namespaceId) { - return ListUtil.map(metaDataMapper.findAllByNamespaceId(namespaceId), MetaDataTransfer.INSTANCE::mapToVO); + return ListUtil.map(metaDataRepository.findByNamespaceId(namespaceId), MetaDataTransfer.INSTANCE::mapToVO); } - + @Override public MetaDataDO findByPathAndNamespaceId(final String path, final String namespaceId) { - return metaDataMapper.findByPathAndNamespaceId(path, namespaceId); + return metaDataRepository.findByPathAndNamespaceId(path, namespaceId).orElse(null); } @Override public MetaDataDO findByServiceNameAndMethodNameAndNamespaceId(final String serviceName, final String methodName, final String namespaceId) { - final List metadataList = metaDataMapper.findByServiceNameAndMethodAndNamespaceId(serviceName, methodName, namespaceId); + final List metadataList = metaDataRepository.findByServiceNameAndMethodNameAndNamespaceId(serviceName, methodName, namespaceId); return CollectionUtils.isEmpty(metadataList) ? null : metadataList.get(0); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MockRequestRecordServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MockRequestRecordServiceImpl.java index 57e4cb58df20..45cb5cafba73 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MockRequestRecordServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/MockRequestRecordServiceImpl.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service.impl; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.MockRequestRecordRepository; import org.apache.shenyu.admin.mapper.MockRequestRecordMapper; import org.apache.shenyu.admin.model.dto.MockRequestRecordDTO; import org.apache.shenyu.admin.model.entity.MockRequestRecordDO; @@ -42,8 +43,11 @@ public class MockRequestRecordServiceImpl implements MockRequestRecordService { private final MockRequestRecordMapper mockRequestRecordMapper; - public MockRequestRecordServiceImpl(final MockRequestRecordMapper mockRequestRecordMapper) { + private final MockRequestRecordRepository mockRequestRecordRepository; + + public MockRequestRecordServiceImpl(final MockRequestRecordMapper mockRequestRecordMapper, final MockRequestRecordRepository mockRequestRecordRepository) { this.mockRequestRecordMapper = mockRequestRecordMapper; + this.mockRequestRecordRepository = mockRequestRecordRepository; } @@ -72,7 +76,7 @@ public MockRequestRecordVO findById(final String id) { if (StringUtils.isBlank(id)) { return mockRequestRecordVO; } - MockRequestRecordDO mockRequestRecordDO = mockRequestRecordMapper.queryById(id); + MockRequestRecordDO mockRequestRecordDO = mockRequestRecordRepository.findById(id).orElse(null); if (Objects.isNull(mockRequestRecordDO)) { return mockRequestRecordVO; } @@ -128,9 +132,7 @@ private int create(final MockRequestRecordDTO mockRequestRecordDTO) { @Override public MockRequestRecordVO queryByApiId(final String apiId) { - MockRequestRecordQuery mockRequestRecordQuery = new MockRequestRecordQuery(); - mockRequestRecordQuery.setApiId(apiId); - List mockRequestRecordDOList = mockRequestRecordMapper.selectByQuery(mockRequestRecordQuery); + List mockRequestRecordDOList = mockRequestRecordRepository.findByApiId(apiId); return mockRequestRecordDOList.isEmpty() ? new MockRequestRecordVO() : MockRequestRecordVO.buildMockRequestRecordVO(mockRequestRecordDOList.get(0)); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespaceServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespaceServiceImpl.java index 500d1e0212b6..d408fb7d5370 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespaceServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespaceServiceImpl.java @@ -21,7 +21,8 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.exception.ShenyuAdminException; -import org.apache.shenyu.admin.mapper.AppAuthMapper; +import org.apache.shenyu.admin.jpa.repository.AppAuthRepository; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.mapper.AuthPathMapper; import org.apache.shenyu.admin.mapper.DiscoveryMapper; import org.apache.shenyu.admin.mapper.MetaDataMapper; @@ -64,6 +65,8 @@ public class NamespaceServiceImpl implements NamespaceService { private final NamespaceMapper namespaceMapper; + private final NamespaceRepository namespaceRepository; + private final NamespaceUserService namespaceUserService; private final NamespaceEventPublisher namespaceEventPublisher; @@ -80,10 +83,10 @@ public class NamespaceServiceImpl implements NamespaceService { private final NamespacePluginRelMapper namespacePluginRelMapper; - private final AppAuthMapper appAuthMapper; - + private final AppAuthRepository appAuthRepository; public NamespaceServiceImpl(final NamespaceMapper namespaceMapper, + final NamespaceRepository namespaceRepository, final NamespaceUserService namespaceUserService, final NamespaceEventPublisher namespaceEventPublisher, final NamespacePluginRelMapper namespacePluginRelMapper, @@ -92,8 +95,9 @@ public NamespaceServiceImpl(final NamespaceMapper namespaceMapper, final AuthPathMapper authPathMapper, final MetaDataMapper metaDataMapper, final DiscoveryMapper discoveryMapper, - final AppAuthMapper appAuthMapper) { + final AppAuthRepository appAuthRepository) { this.namespaceMapper = namespaceMapper; + this.namespaceRepository = namespaceRepository; this.namespaceUserService = namespaceUserService; this.namespaceEventPublisher = namespaceEventPublisher; this.namespacePluginRelMapper = namespacePluginRelMapper; @@ -102,7 +106,7 @@ public NamespaceServiceImpl(final NamespaceMapper namespaceMapper, this.authPathMapper = authPathMapper; this.metaDataMapper = metaDataMapper; this.discoveryMapper = discoveryMapper; - this.appAuthMapper = appAuthMapper; + this.appAuthRepository = appAuthRepository; } @Override @@ -116,7 +120,7 @@ public NamespaceVO createOrUpdate(final NamespaceDTO namespaceDTO) { public CommonPager listByPage(final NamespaceQuery namespaceQuery) { List namespaceIds; if (SessionUtil.isAdmin()) { - List allList = namespaceMapper.selectAll(); + List allList = namespaceRepository.findAll(); namespaceIds = allList.stream().map(NamespaceDO::getNamespaceId).toList(); } else { namespaceIds = namespaceUserService.listNamespaceIdByUserId(SessionUtil.visitorId()); @@ -156,7 +160,7 @@ public String delete(final List ids) { if (CollectionUtils.isNotEmpty(metaDataDOList)) { throw new ShenyuAdminException("metaData exist under those namespace!"); } - List appPathDOList = appAuthMapper.findByNamespaceIds(namespaceIdList); + List appPathDOList = appAuthRepository.findByNamespaceIdIn(namespaceIdList); if (CollectionUtils.isNotEmpty(appPathDOList)) { throw new ShenyuAdminException("appPath exist under those namespace!"); } @@ -166,22 +170,22 @@ public String delete(final List ids) { @Override public NamespaceVO findById(final String id) { - return NamespaceTransfer.INSTANCE.mapToVo(namespaceMapper.selectById(id)); + return NamespaceTransfer.INSTANCE.mapToVo(namespaceRepository.findById(id).orElse(null)); } @Override public NamespaceVO findByNamespaceId(final String namespaceId) { - return NamespaceTransfer.INSTANCE.mapToVo(namespaceMapper.selectByNamespaceId(namespaceId)); + return NamespaceTransfer.INSTANCE.mapToVo(namespaceRepository.findByNamespaceId(namespaceId).orElse(null)); } @Override public List list(final String name) { - + if (SessionUtil.isAdmin()) { - List allList = namespaceMapper.selectAll(); + List allList = namespaceRepository.findAll(); return allList.stream().map(NamespaceTransfer.INSTANCE::mapToVo).collect(Collectors.toList()); } - + List namespaceIds = namespaceUserService.listNamespaceIdByUserId(SessionUtil.visitorId()); if (CollectionUtils.isEmpty(namespaceIds)) { @@ -197,7 +201,7 @@ public List list(final String name) { @Override public List listAll() { - List namespaceDOS = namespaceMapper.selectAll(); + List namespaceDOS = namespaceRepository.findAll(); return namespaceDOS.stream().map(NamespaceTransfer.INSTANCE::mapToVo).collect(Collectors.toList()); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespaceUserServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespaceUserServiceImpl.java index 17fd54b4b449..20759a77e74e 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespaceUserServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespaceUserServiceImpl.java @@ -19,6 +19,7 @@ import com.google.common.collect.Lists; import org.apache.shenyu.admin.exception.ShenyuAdminException; +import org.apache.shenyu.admin.jpa.repository.NamespaceUserRelRepository; import org.apache.shenyu.admin.mapper.NamespaceUserRelMapper; import org.apache.shenyu.admin.model.entity.NamespaceDO; import org.apache.shenyu.admin.model.entity.NamespaceUserRelDO; @@ -36,11 +37,14 @@ @Service public class NamespaceUserServiceImpl implements NamespaceUserService { - + private final NamespaceUserRelMapper namespaceUserRelMapper; - - public NamespaceUserServiceImpl(final NamespaceUserRelMapper namespaceUserRelMapper) { + + private final NamespaceUserRelRepository namespaceUserRelRepository; + + public NamespaceUserServiceImpl(final NamespaceUserRelMapper namespaceUserRelMapper, final NamespaceUserRelRepository namespaceUserRelRepository) { this.namespaceUserRelMapper = namespaceUserRelMapper; + this.namespaceUserRelRepository = namespaceUserRelRepository; } @Override @@ -66,7 +70,7 @@ public NamespaceUserRelVO create(final String namespaceId, final String userId) @Override public List listNamespaceIdByUserId(final String userId) { - List namespaceUserRelDOS = namespaceUserRelMapper.selectListByUserId(userId); + List namespaceUserRelDOS = namespaceUserRelRepository.findByUserId(userId); if (Objects.isNull(namespaceUserRelDOS)) { return Lists.newArrayList(); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/OperationRecordLogServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/OperationRecordLogServiceImpl.java index e13a8cffeba1..9ebda800b22d 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/OperationRecordLogServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/OperationRecordLogServiceImpl.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service.impl; import org.apache.shenyu.admin.config.properties.DashboardProperties; +import org.apache.shenyu.admin.jpa.repository.OperationRecordLogRepository; import org.apache.shenyu.admin.mapper.OperationRecordLogMapper; import org.apache.shenyu.admin.model.entity.OperationRecordLog; import org.apache.shenyu.admin.model.query.RecordLogQueryCondition; @@ -29,6 +30,7 @@ import java.util.Date; import java.util.List; +import org.springframework.data.domain.PageRequest; /** * OperationRecordLogServiceImpl. @@ -37,12 +39,16 @@ public class OperationRecordLogServiceImpl implements OperationRecordLogService { private final OperationRecordLogMapper recordLogMapper; + + private final OperationRecordLogRepository operationRecordLogRepository; private final DashboardProperties dashboardProperties; public OperationRecordLogServiceImpl(final OperationRecordLogMapper recordLogMapper, + final OperationRecordLogRepository operationRecordLogRepository, final DashboardProperties dashboardProperties) { this.recordLogMapper = recordLogMapper; + this.operationRecordLogRepository = operationRecordLogRepository; this.dashboardProperties = dashboardProperties; } @@ -59,13 +65,14 @@ public void doConditionPreProcessing(final RecordLogQueryCondition condition) { public List searchByCondition(final RecordLogQueryCondition condition) { return recordLogMapper.selectByCondition(condition); } - + @Override public List list() { + PageRequest pageRequest = PageRequest.of(0, dashboardProperties.getRecordLogLimit()); if (SessionUtil.isAdmin()) { - return recordLogMapper.selectLimit(null, dashboardProperties.getRecordLogLimit()); + return operationRecordLogRepository.findByOrderByOperationTimeDesc(pageRequest); } - return recordLogMapper.selectLimit(SessionUtil.visitorName(), dashboardProperties.getRecordLogLimit()); + return operationRecordLogRepository.findByOperatorOrderByOperationTimeDesc(SessionUtil.visitorName(), pageRequest); } @Override diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginHandleServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginHandleServiceImpl.java index 9517ed61b7b0..ac30fd07dc85 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginHandleServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginHandleServiceImpl.java @@ -21,6 +21,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.Pageable; +import org.apache.shenyu.admin.jpa.repository.PluginHandleRepository; import org.apache.shenyu.admin.mapper.PluginHandleMapper; import org.apache.shenyu.admin.mapper.ShenyuDictMapper; import org.apache.shenyu.admin.model.dto.PluginHandleDTO; @@ -65,14 +66,18 @@ public class PluginHandleServiceImpl implements PluginHandleService { private final PluginHandleMapper pluginHandleMapper; + private final PluginHandleRepository pluginHandleRepository; + private final ShenyuDictMapper shenyuDictMapper; private final PluginHandleEventPublisher eventPublisher; public PluginHandleServiceImpl(final PluginHandleMapper pluginHandleMapper, + final PluginHandleRepository pluginHandleRepository, final ShenyuDictMapper shenyuDictMapper, final PluginHandleEventPublisher eventPublisher) { this.pluginHandleMapper = pluginHandleMapper; + this.pluginHandleRepository = pluginHandleRepository; this.shenyuDictMapper = shenyuDictMapper; this.eventPublisher = eventPublisher; } @@ -120,28 +125,24 @@ public Integer deletePluginHandles(final List ids) { @Override public PluginHandleVO findById(final String id) { - return buildPluginHandleVO(pluginHandleMapper.selectById(id)); + return buildPluginHandleVO(pluginHandleRepository.findById(id).orElse(null)); } @Override public List list(final String pluginId, final Integer type) { - List pluginHandleDOList = pluginHandleMapper.selectByQuery(PluginHandleQuery.builder() - .pluginId(pluginId) - .type(type) - .build()); + List pluginHandleDOList = pluginHandleRepository.findByPluginId(pluginId); return buildPluginHandleVO(pluginHandleDOList); } @Override public List listAllData() { - List pluginHandleDOList = pluginHandleMapper.selectByQuery(PluginHandleQuery.builder() - .build()); + List pluginHandleDOList = pluginHandleRepository.findAll(); return buildPluginHandleVO(pluginHandleDOList); } - + @Override public List listAllDataByPluginIds(final Collection pluginIds) { - List pluginHandleDOList = pluginHandleMapper.selectByPluginIds(pluginIds); + List pluginHandleDOList = pluginHandleRepository.findByPluginIdIn(pluginIds); if (CollectionUtils.isEmpty(pluginHandleDOList)) { return Lists.newArrayList(); } @@ -201,7 +202,7 @@ public ConfigImportResult importData(final List pluginHandleLis */ @EventListener(value = BatchPluginDeletedEvent.class) public void onPluginDeleted(final BatchPluginDeletedEvent event) { - deletePluginHandles(ListUtil.map(pluginHandleMapper.selectByPluginIdList(event.getDeletedPluginIds()), BaseDO::getId)); + deletePluginHandles(ListUtil.map(pluginHandleRepository.findByPluginIdIn(event.getDeletedPluginIds()), BaseDO::getId)); } private PluginHandleVO buildPluginHandleVO(final PluginHandleDO pluginHandleDO) { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java index 2bcea4503bb5..37d9df8d2c25 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java @@ -20,6 +20,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.Pageable; +import org.apache.shenyu.admin.jpa.repository.PluginRepository; import org.apache.shenyu.admin.mapper.NamespacePluginRelMapper; import org.apache.shenyu.admin.mapper.PluginMapper; import org.apache.shenyu.admin.model.dto.PluginDTO; @@ -74,14 +75,18 @@ public class PluginServiceImpl implements PluginService { private final PluginMapper pluginMapper; + private final PluginRepository pluginRepository; + private final PluginEventPublisher pluginEventPublisher; private final NamespacePluginRelMapper namespacePluginRelMapper; public PluginServiceImpl(final PluginMapper pluginMapper, + final PluginRepository pluginRepository, final PluginEventPublisher pluginEventPublisher, final NamespacePluginRelMapper namespacePluginRelMapper) { this.pluginMapper = pluginMapper; + this.pluginRepository = pluginRepository; this.pluginEventPublisher = pluginEventPublisher; this.namespacePluginRelMapper = namespacePluginRelMapper; } @@ -173,7 +178,7 @@ public String enabled(final List ids, final Boolean enabled) { */ @Override public PluginVO findById(final String id) { - return PluginVO.buildPluginVO(pluginMapper.selectById(id)); + return PluginVO.buildPluginVO(pluginRepository.findById(id).orElse(null)); } /** @@ -198,12 +203,12 @@ public CommonPager listByPage(final PluginQuery pluginQuery) { */ @Override public List listAll() { - return ListUtil.map(pluginMapper.selectAll(), PluginTransfer.INSTANCE::mapToData); + return ListUtil.map(pluginRepository.findAll(), PluginTransfer.INSTANCE::mapToData); } @Override public List listAllData() { - return pluginMapper.selectAll() + return pluginRepository.findAll() .stream() .filter(Objects::nonNull) .map(PluginVO::buildPluginVO).collect(Collectors.toList()); @@ -211,12 +216,12 @@ public List listAllData() { @Override public List listAllNotInResource() { - return ListUtil.map(pluginMapper.listAllNotInResource(), PluginTransfer.INSTANCE::mapToData); + return ListUtil.map(pluginRepository.listAllNotInResource(), PluginTransfer.INSTANCE::mapToData); } @Override public String selectIdByName(final String name) { - PluginDO pluginDO = pluginMapper.selectByName(name); + PluginDO pluginDO = pluginRepository.findByName(name).orElse(null); Objects.requireNonNull(pluginDO); return pluginDO.getId(); } @@ -229,7 +234,7 @@ public String selectIdByName(final String name) { */ @Override public PluginDO findByName(final String name) { - return pluginMapper.selectByName(name); + return pluginRepository.findByName(name).orElse(null); } /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ProxySelectorServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ProxySelectorServiceImpl.java index a4b2a40fd907..ecc0633bf33a 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ProxySelectorServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ProxySelectorServiceImpl.java @@ -22,6 +22,7 @@ import org.apache.shenyu.admin.discovery.DiscoveryLevel; import org.apache.shenyu.admin.discovery.DiscoveryProcessor; import org.apache.shenyu.admin.discovery.DiscoveryProcessorHolder; +import org.apache.shenyu.admin.jpa.repository.ProxySelectorRepository; import org.apache.shenyu.admin.mapper.DiscoveryHandlerMapper; import org.apache.shenyu.admin.mapper.DiscoveryMapper; import org.apache.shenyu.admin.mapper.DiscoveryRelMapper; @@ -77,6 +78,8 @@ public class ProxySelectorServiceImpl implements ProxySelectorService { private final ProxySelectorMapper proxySelectorMapper; + private final ProxySelectorRepository proxySelectorRepository; + private final DiscoveryMapper discoveryMapper; private final DiscoveryRelMapper discoveryRelMapper; @@ -89,13 +92,17 @@ public class ProxySelectorServiceImpl implements ProxySelectorService { private final DiscoveryProcessorHolder discoveryProcessorHolder; - public ProxySelectorServiceImpl(final ProxySelectorMapper proxySelectorMapper, final DiscoveryMapper discoveryMapper, - final DiscoveryUpstreamMapper discoveryUpstreamMapper, final DiscoveryHandlerMapper discoveryHandlerMapper, + public ProxySelectorServiceImpl(final ProxySelectorMapper proxySelectorMapper, + final ProxySelectorRepository proxySelectorRepository, + final DiscoveryMapper discoveryMapper, + final DiscoveryUpstreamMapper discoveryUpstreamMapper, + final DiscoveryHandlerMapper discoveryHandlerMapper, final DiscoveryRelMapper discoveryRelMapper, final SelectorMapper selectorMapper, final DiscoveryProcessorHolder discoveryProcessorHolder) { this.proxySelectorMapper = proxySelectorMapper; + this.proxySelectorRepository = proxySelectorRepository; this.discoveryMapper = discoveryMapper; this.discoveryRelMapper = discoveryRelMapper; this.discoveryUpstreamMapper = discoveryUpstreamMapper; @@ -415,7 +422,7 @@ public void fetchData(final String discoveryHandlerId) { @Override public List listAll() { - return proxySelectorMapper.selectAll().stream() + return proxySelectorRepository.findAll().stream() .map(DiscoveryTransfer.INSTANCE::mapToData).collect(Collectors.toList()); } @@ -428,7 +435,7 @@ public List listAllByNamespaceId(final String namespaceId) { @Override public List listAllData() { List result = Lists.newArrayList(); - proxySelectorMapper.selectAll().forEach(proxySelectorDO -> { + proxySelectorRepository.findAll().forEach(proxySelectorDO -> { ProxySelectorVO vo = new ProxySelectorVO(); vo.setId(proxySelectorDO.getId()); vo.setName(proxySelectorDO.getName()); diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RegistryServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RegistryServiceImpl.java index 9ab506933cdf..36ac8d92866b 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RegistryServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RegistryServiceImpl.java @@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.exception.ShenyuAdminException; +import org.apache.shenyu.admin.jpa.repository.RegistryRepository; import org.apache.shenyu.admin.mapper.RegistryMapper; import org.apache.shenyu.admin.model.dto.RegistryDTO; import org.apache.shenyu.admin.model.entity.RegistryDO; @@ -42,8 +43,11 @@ public class RegistryServiceImpl implements RegistryService { private final RegistryMapper registryMapper; - public RegistryServiceImpl(final RegistryMapper registryMapper) { + private final RegistryRepository registryRepository; + + public RegistryServiceImpl(final RegistryMapper registryMapper, final RegistryRepository registryRepository) { this.registryMapper = registryMapper; + this.registryRepository = registryRepository; } @Override @@ -68,17 +72,17 @@ public String delete(final List ids) { @Override public RegistryVO findById(final String id) { - return RegistryTransfer.INSTANCE.mapToVo(registryMapper.selectById(id)); + return RegistryTransfer.INSTANCE.mapToVo(registryRepository.findById(id).orElse(null)); } @Override public RegistryVO findByRegistryId(final String registryId) { - return RegistryTransfer.INSTANCE.mapToVo(registryMapper.selectByRegistryId(registryId)); + return RegistryTransfer.INSTANCE.mapToVo(registryRepository.findByRegistryId(registryId).orElse(null)); } @Override public List listAll() { - List registryDOS = registryMapper.selectAll(); + List registryDOS = registryRepository.findAll(); return registryDOS.stream().map(RegistryTransfer.INSTANCE::mapToVo).collect(Collectors.toList()); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ResourceServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ResourceServiceImpl.java index ef5540f09917..7b8e188fa474 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ResourceServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ResourceServiceImpl.java @@ -20,6 +20,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.shenyu.admin.aspect.annotation.Pageable; import org.apache.shenyu.admin.config.properties.DashboardProperties; +import org.apache.shenyu.admin.jpa.repository.ResourceRepository; import org.apache.shenyu.admin.mapper.ResourceMapper; import org.apache.shenyu.admin.model.dto.CreateResourceDTO; import org.apache.shenyu.admin.model.dto.ResourceDTO; @@ -53,15 +54,19 @@ public class ResourceServiceImpl implements ResourceService { private final ResourceMapper resourceMapper; + + private final ResourceRepository resourceRepository; private final ResourceEventPublisher publisher; private final DashboardProperties properties; public ResourceServiceImpl(final ResourceMapper resourceMapper, + final ResourceRepository resourceRepository, final ResourceEventPublisher publisher, final DashboardProperties properties) { this.resourceMapper = resourceMapper; + this.resourceRepository = resourceRepository; this.publisher = publisher; this.properties = properties; } @@ -131,7 +136,7 @@ public int delete(final List ids) { */ @Override public ResourceVO findById(final String id) { - return ResourceVO.buildResourceVO(resourceMapper.selectById(id)); + return ResourceVO.buildResourceVO(resourceRepository.findById(id).orElse(null)); } /** @@ -179,7 +184,7 @@ public CommonPager listByPage(final ResourceQuery resourceQuery) { @Override public List getMenuTree() { // Hide super administrator special privileges - List resourceVOList = resourceMapper.selectAll() + List resourceVOList = resourceRepository.findAll() .stream() .filter(r -> !properties.getOnlySuperAdminPermission().contains(r.getPerms())) .map(ResourceVO::buildResourceVO) diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RoleServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RoleServiceImpl.java index 8ee97a3af1c6..bb873e8b15db 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RoleServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RoleServiceImpl.java @@ -21,6 +21,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.Pageable; import org.apache.shenyu.admin.config.properties.DashboardProperties; +import org.apache.shenyu.admin.jpa.repository.RoleRepository; import org.apache.shenyu.admin.mapper.PermissionMapper; import org.apache.shenyu.admin.mapper.ResourceMapper; import org.apache.shenyu.admin.mapper.RoleMapper; @@ -61,6 +62,8 @@ public class RoleServiceImpl implements RoleService { private final RoleMapper roleMapper; + + private final RoleRepository roleRepository; private final DashboardProperties properties; @@ -71,11 +74,13 @@ public class RoleServiceImpl implements RoleService { private final RoleEventPublisher roleEventPublisher; public RoleServiceImpl(final RoleMapper roleMapper, + final RoleRepository roleRepository, final DashboardProperties properties, final PermissionMapper permissionMapper, final ResourceMapper resourceMapper, final RoleEventPublisher roleEventPublisher) { this.roleMapper = roleMapper; + this.roleRepository = roleRepository; this.properties = properties; this.permissionMapper = permissionMapper; this.resourceMapper = resourceMapper; @@ -140,7 +145,7 @@ public int delete(final List ids) { */ @Override public RoleEditVO findById(final String id) { - RoleVO sysRole = RoleVO.buildRoleVO(roleMapper.selectById(id)); + RoleVO sysRole = RoleVO.buildRoleVO(roleRepository.findById(id).orElse(null)); return Optional.ofNullable(sysRole) .map(item -> new RoleEditVO(getPermissionIdsByRoleId(item.getId()), item, getAllPermissions())) .orElse(null); @@ -154,7 +159,7 @@ public RoleEditVO findById(final String id) { */ @Override public RoleVO findByQuery(final String roleName) { - return RoleVO.buildRoleVO(roleMapper.findByRoleName(roleName)); + return RoleVO.buildRoleVO(roleRepository.findByRoleName(roleName).orElse(null)); } /** @@ -179,7 +184,7 @@ public CommonPager listByPage(final RoleQuery roleQuery) { */ @Override public List selectAll() { - return ListUtil.map(roleMapper.selectAll(), RoleVO::buildRoleVO); + return ListUtil.map(roleRepository.findAll(), RoleVO::buildRoleVO); } /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java index dabcc4fe1081..7dcafe5c64c9 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java @@ -25,6 +25,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.DataPermission; import org.apache.shenyu.admin.aspect.annotation.Pageable; +import org.apache.shenyu.admin.jpa.repository.RuleRepository; import org.apache.shenyu.admin.mapper.PluginMapper; import org.apache.shenyu.admin.mapper.RuleConditionMapper; import org.apache.shenyu.admin.mapper.RuleMapper; @@ -86,6 +87,8 @@ public class RuleServiceImpl implements RuleService { private final RuleMapper ruleMapper; + private final RuleRepository ruleRepository; + private final RuleConditionMapper ruleConditionMapper; private final SelectorMapper selectorMapper; @@ -95,11 +98,13 @@ public class RuleServiceImpl implements RuleService { private final RuleEventPublisher ruleEventPublisher; public RuleServiceImpl(final RuleMapper ruleMapper, + final RuleRepository ruleRepository, final RuleConditionMapper ruleConditionMapper, final SelectorMapper selectorMapper, final PluginMapper pluginMapper, final RuleEventPublisher ruleEventPublisher) { this.ruleMapper = ruleMapper; + this.ruleRepository = ruleRepository; this.ruleConditionMapper = ruleConditionMapper; this.selectorMapper = selectorMapper; this.pluginMapper = pluginMapper; @@ -237,7 +242,7 @@ public int update(final RuleDTO ruleDTO) { */ @Override public RuleVO findById(final String id) { - return RuleVO.buildRuleVO(ruleMapper.selectById(id), + return RuleVO.buildRuleVO(ruleRepository.findById(id).orElse(null), map(ruleConditionMapper.selectByQuery(new RuleConditionQuery(id)), RuleConditionVO::buildRuleConditionVO)); } @@ -256,7 +261,7 @@ public CommonPager listByPage(final RuleQuery ruleQuery) { @Override public List listAll() { - return this.buildRuleDataList(ruleMapper.selectAll()); + return this.buildRuleDataList(ruleRepository.findAll()); } @Override @@ -266,7 +271,7 @@ public List listAllByNamespaceId(final String namespaceId) { @Override public List listAllData() { - return this.buildRuleVOList(ruleMapper.selectAll()); + return this.buildRuleVOList(ruleRepository.findAll()); } @Override @@ -276,12 +281,12 @@ public List listAllDataByNamespaceId(final String namespaceId) { @Override public List findBySelectorId(final String selectorId) { - return this.buildRuleDataList(ruleMapper.findBySelectorId(selectorId)); + return this.buildRuleDataList(ruleRepository.findBySelectorId(selectorId)); } @Override public List findBySelectorIdList(final List selectorIdList) { - return this.buildRuleDataList(ruleMapper.findBySelectorIds(selectorIdList)); + return this.buildRuleDataList(ruleRepository.findBySelectorIdIn(selectorIdList)); } @Override @@ -291,7 +296,7 @@ public RuleDO findByName(final String name) { @Override public RuleDO findBySelectorIdAndName(final String selectorId, final String name) { - return ruleMapper.findBySelectorIdAndName(selectorId, name); + return ruleRepository.findBySelectorIdAndRuleName(selectorId, name).orElse(null); } @Override diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ScalePolicyServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ScalePolicyServiceImpl.java index 3996545c2327..7a4607577c86 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ScalePolicyServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ScalePolicyServiceImpl.java @@ -17,6 +17,7 @@ package org.apache.shenyu.admin.service.impl; +import org.apache.shenyu.admin.jpa.repository.ScalePolicyRepository; import org.apache.shenyu.admin.mapper.ScalePolicyMapper; import org.apache.shenyu.admin.model.dto.ScalePolicyDTO; import org.apache.shenyu.admin.model.entity.ScalePolicyDO; @@ -37,14 +38,18 @@ public class ScalePolicyServiceImpl implements ScalePolicyService { private final ScalePolicyMapper scalePolicyMapper; + private final ScalePolicyRepository scalePolicyRepository; + private final ScalePolicyCache scalePolicyCache; private final ScaleService scaleService; public ScalePolicyServiceImpl(final ScalePolicyMapper scalePolicyMapper, + final ScalePolicyRepository scalePolicyRepository, final ScalePolicyCache scalePolicyCache, final ScaleService scaleService) { this.scalePolicyMapper = scalePolicyMapper; + this.scalePolicyRepository = scalePolicyRepository; this.scalePolicyCache = scalePolicyCache; this.scaleService = scaleService; } @@ -56,7 +61,7 @@ public ScalePolicyServiceImpl(final ScalePolicyMapper scalePolicyMapper, */ @Override public List selectAll() { - return ListUtil.map(scalePolicyMapper.selectAll(), ScalePolicyVO::buildScalePolicyVO); + return ListUtil.map(scalePolicyRepository.findAll(), ScalePolicyVO::buildScalePolicyVO); } /** @@ -67,7 +72,7 @@ public List selectAll() { */ @Override public ScalePolicyVO findById(final String id) { - return ScalePolicyVO.buildScalePolicyVO(scalePolicyMapper.selectByPrimaryKey(id)); + return ScalePolicyVO.buildScalePolicyVO(scalePolicyRepository.findById(id).orElse(null)); } /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ScaleRuleServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ScaleRuleServiceImpl.java index 57a66e5928a6..63422f542081 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ScaleRuleServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ScaleRuleServiceImpl.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service.impl; import org.apache.shenyu.admin.aspect.annotation.Pageable; +import org.apache.shenyu.admin.jpa.repository.ScaleRuleRepository; import org.apache.shenyu.admin.mapper.ScaleRuleMapper; import org.apache.shenyu.admin.model.dto.ScaleRuleDTO; import org.apache.shenyu.admin.model.entity.ScaleRuleDO; @@ -42,10 +43,13 @@ public class ScaleRuleServiceImpl implements ScaleRuleService { private final ScaleRuleMapper scaleRuleMapper; + private final ScaleRuleRepository scaleRuleRepository; + private final ScaleRuleCache scaleRuleCache; - public ScaleRuleServiceImpl(final ScaleRuleMapper scaleRuleMapper, final ScaleRuleCache scaleRuleCache) { + public ScaleRuleServiceImpl(final ScaleRuleMapper scaleRuleMapper, final ScaleRuleRepository scaleRuleRepository, final ScaleRuleCache scaleRuleCache) { this.scaleRuleMapper = scaleRuleMapper; + this.scaleRuleRepository = scaleRuleRepository; this.scaleRuleCache = scaleRuleCache; } @@ -57,7 +61,7 @@ public ScaleRuleServiceImpl(final ScaleRuleMapper scaleRuleMapper, final ScaleRu */ @Override public List selectAll() { - return ListUtil.map(scaleRuleMapper.selectAll(), ScaleRuleVO::buildScaleRuleVO); + return ListUtil.map(scaleRuleRepository.findAll(), ScaleRuleVO::buildScaleRuleVO); } /** @@ -83,7 +87,7 @@ public CommonPager listByPage(final ScaleRuleQuery scaleRuleQuery) */ @Override public ScaleRuleVO findById(final String id) { - return ScaleRuleVO.buildScaleRuleVO(scaleRuleMapper.selectByPrimaryKey(id)); + return ScaleRuleVO.buildScaleRuleVO(scaleRuleRepository.findById(id).orElse(null)); } /** diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java index f44132f4deff..ce322c89b459 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java @@ -29,6 +29,7 @@ import org.apache.shenyu.admin.discovery.DiscoveryLevel; import org.apache.shenyu.admin.discovery.DiscoveryProcessor; import org.apache.shenyu.admin.discovery.DiscoveryProcessorHolder; +import org.apache.shenyu.admin.jpa.repository.SelectorRepository; import org.apache.shenyu.admin.listener.DataChangedEvent; import org.apache.shenyu.admin.mapper.DiscoveryHandlerMapper; import org.apache.shenyu.admin.mapper.DiscoveryMapper; @@ -111,6 +112,8 @@ public class SelectorServiceImpl implements SelectorService { private final SelectorMapper selectorMapper; + private final SelectorRepository selectorRepository; + private final SelectorConditionMapper selectorConditionMapper; private final PluginMapper pluginMapper; @@ -130,6 +133,7 @@ public class SelectorServiceImpl implements SelectorService { private final DiscoveryProcessorHolder discoveryProcessorHolder; public SelectorServiceImpl(final SelectorMapper selectorMapper, + final SelectorRepository selectorRepository, final SelectorConditionMapper selectorConditionMapper, final PluginMapper pluginMapper, final ApplicationEventPublisher eventPublisher, @@ -140,6 +144,7 @@ public SelectorServiceImpl(final SelectorMapper selectorMapper, final DiscoveryProcessorHolder discoveryProcessorHolder, final SelectorEventPublisher selectorEventPublisher) { this.selectorMapper = selectorMapper; + this.selectorRepository = selectorRepository; this.selectorConditionMapper = selectorConditionMapper; this.pluginMapper = pluginMapper; this.discoveryMapper = discoveryMapper; @@ -344,7 +349,7 @@ private void unbindDiscovery(final List selectors, final List conditions = ListUtil.map(selectorConditionMapper.selectByQuery(new SelectorConditionQuery(id)), SelectorConditionVO::buildSelectorConditionVO); - SelectorVO selectorVO = SelectorVO.buildSelectorVO(selectorMapper.selectById(id), conditions); + SelectorVO selectorVO = SelectorVO.buildSelectorVO(selectorRepository.findById(id).orElse(null), conditions); DiscoveryHandlerDO discoveryHandlerDO = discoveryHandlerMapper.selectBySelectorId(id); if (Objects.nonNull(discoveryHandlerDO)) { selectorVO.setDiscoveryHandler(DiscoveryTransfer.INSTANCE.mapToVo(discoveryHandlerDO)); @@ -455,7 +460,7 @@ public List findByPluginIdAndNamespaceId(final String pluginId, fi @Override public List listAll() { - return this.buildSelectorDataList(selectorMapper.selectAll()); + return this.buildSelectorDataList(selectorRepository.findAll()); } @Override @@ -465,7 +470,7 @@ public List listAllByNamespaceId(final String namespaceId) { @Override public List listAllData() { - return this.buildSelectorExportVOList(selectorMapper.selectAll()); + return this.buildSelectorExportVOList(selectorRepository.findAll()); } @Override diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ShenyuDictServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ShenyuDictServiceImpl.java index 2b1e6ab0759e..61416c1a7449 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ShenyuDictServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ShenyuDictServiceImpl.java @@ -21,6 +21,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.aspect.annotation.Pageable; +import org.apache.shenyu.admin.jpa.repository.ShenyuDictRepository; import org.apache.shenyu.admin.mapper.ShenyuDictMapper; import org.apache.shenyu.admin.model.dto.ShenyuDictDTO; import org.apache.shenyu.admin.model.entity.ShenyuDictDO; @@ -47,11 +48,16 @@ public class ShenyuDictServiceImpl implements ShenyuDictService { private final ShenyuDictMapper shenyuDictMapper; - + + private final ShenyuDictRepository shenyuDictRepository; + private final DictEventPublisher publisher; - - public ShenyuDictServiceImpl(final ShenyuDictMapper shenyuDictMapper, final DictEventPublisher publisher) { + + public ShenyuDictServiceImpl(final ShenyuDictMapper shenyuDictMapper, + final ShenyuDictRepository shenyuDictRepository, + final DictEventPublisher publisher) { this.shenyuDictMapper = shenyuDictMapper; + this.shenyuDictRepository = shenyuDictRepository; this.publisher = publisher; } @@ -144,27 +150,24 @@ public ConfigImportResult importData(final List dictList) { @Override public ShenyuDictVO findById(final String id) { - return ShenyuDictVO.buildShenyuDictVO(shenyuDictMapper.selectById(id)); + return ShenyuDictVO.buildShenyuDictVO(shenyuDictRepository.findById(id).orElse(null)); } @Override public ShenyuDictVO findByDictCodeName(final String dictCode, final String dictName) { - return ShenyuDictVO.buildShenyuDictVO(shenyuDictMapper.selectByDictCodeAndDictName(dictCode, dictName)); + return ShenyuDictVO.buildShenyuDictVO(shenyuDictRepository.findByDictCodeAndDictName(dictCode, dictName).orElse(null)); } @Override public List list(final String type) { - ShenyuDictQuery shenyuDictQuery = new ShenyuDictQuery(); - shenyuDictQuery.setType(type); - return shenyuDictMapper.selectByQuery(shenyuDictQuery).stream() + return shenyuDictRepository.findByType(type).stream() .map(ShenyuDictVO::buildShenyuDictVO) .collect(Collectors.toList()); } @Override public List listAllData() { - ShenyuDictQuery shenyuDictQuery = new ShenyuDictQuery(); - return shenyuDictMapper.selectByQuery(shenyuDictQuery).stream() + return shenyuDictRepository.findAll().stream() .map(ShenyuDictVO::buildShenyuDictVO) .collect(Collectors.toList()); } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/TagRelationServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/TagRelationServiceImpl.java index 9964a9f268bc..8f8b051008f7 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/TagRelationServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/TagRelationServiceImpl.java @@ -20,10 +20,10 @@ import com.google.common.collect.Lists; import java.util.List; import java.util.Optional; +import org.apache.shenyu.admin.jpa.repository.TagRelationRepository; import org.apache.shenyu.admin.mapper.TagRelationMapper; import org.apache.shenyu.admin.model.dto.TagRelationDTO; import org.apache.shenyu.admin.model.entity.TagRelationDO; -import org.apache.shenyu.admin.model.query.TagRelationQuery; import org.apache.shenyu.admin.service.TagRelationService; import org.apache.shenyu.admin.utils.Assert; import org.springframework.stereotype.Service; @@ -36,8 +36,11 @@ public class TagRelationServiceImpl implements TagRelationService { private final TagRelationMapper tagRelationMapper; - public TagRelationServiceImpl(final TagRelationMapper tagRelationMapper) { + private final TagRelationRepository tagRelationRepository; + + public TagRelationServiceImpl(final TagRelationMapper tagRelationMapper, final TagRelationRepository tagRelationRepository) { this.tagRelationMapper = tagRelationMapper; + this.tagRelationRepository = tagRelationRepository; } @Override @@ -61,20 +64,16 @@ public int delete(final List ids) { @Override public TagRelationDO findById(final String id) { - return tagRelationMapper.selectByPrimaryKey(id); + return tagRelationRepository.findById(id).orElse(null); } @Override public List findByTagId(final String tagId) { - TagRelationQuery tagRelationQuery = new TagRelationQuery(); - tagRelationQuery.setTagId(tagId); - return Optional.ofNullable(tagRelationMapper.selectByQuery(tagRelationQuery)).orElse(Lists.newArrayList()); + return Optional.ofNullable(tagRelationRepository.findByTagId(tagId)).orElse(Lists.newArrayList()); } @Override public List findApiId(final String apiId) { - TagRelationQuery tagRelationQuery = new TagRelationQuery(); - tagRelationQuery.setApiId(apiId); - return Optional.ofNullable(tagRelationMapper.selectByQuery(tagRelationQuery)).orElse(Lists.newArrayList()); + return Optional.ofNullable(tagRelationRepository.findByApiId(apiId)).orElse(Lists.newArrayList()); } } diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/TagServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/TagServiceImpl.java index 94f66b5b7f1c..25239e56b9eb 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/TagServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/TagServiceImpl.java @@ -20,6 +20,7 @@ import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.TagRepository; import org.apache.shenyu.admin.mapper.TagMapper; import org.apache.shenyu.admin.model.dto.TagDTO; import org.apache.shenyu.admin.model.entity.BaseDO; @@ -49,8 +50,11 @@ public class TagServiceImpl implements TagService { private final TagMapper tagMapper; - public TagServiceImpl(final TagMapper tagMapper) { + private final TagRepository tagRepository; + + public TagServiceImpl(final TagMapper tagMapper, final TagRepository tagRepository) { this.tagMapper = tagMapper; + this.tagRepository = tagRepository; } @Override @@ -109,8 +113,7 @@ public int delete(final List ids) { @Override public TagVO findById(final String id) { - TagDO tagDO = tagMapper.selectByPrimaryKey(id); - return TagVO.buildTagVO(tagDO); + return TagVO.buildTagVO(tagRepository.findById(id).orElse(null)); } @Override @@ -129,14 +132,12 @@ public List findByQuery(final String tagName, final String parentTagId) { @Override public List findByParentTagId(final String parentTagId) { - TagQuery tagQuery = new TagQuery(); - tagQuery.setParentTagId(parentTagId); - List tagDOS = tagMapper.selectByQuery(tagQuery); + List tagDOS = tagRepository.findByParentTagId(parentTagId); if (CollectionUtils.isEmpty(tagDOS)) { return Lists.newArrayList(); } List rootIds = tagDOS.stream().map(TagDO::getId).collect(Collectors.toList()); - List tagDOList = tagMapper.selectByParentTagIds(rootIds); + List tagDOList = tagRepository.findByParentTagIdIn(rootIds); Map map = tagDOList.stream().collect( Collectors.toMap(TagDO::getParentTagId, tagDO -> true, (a, b) -> b, ConcurrentHashMap::new)); return tagDOS.stream().map(tag -> { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/AlertTransfer.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/AlertTransfer.java index 02a4c3071c36..064e5e016a53 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/AlertTransfer.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/AlertTransfer.java @@ -112,6 +112,7 @@ public AlertReceiverDTO mapToAlertReceiverDTO(final AlertReceiverDO alertReceive alertReceiverDTO.setSlackWebHookUrl(alertReceiverDO.getSlackWebHookUrl()); alertReceiverDTO.setDateCreated(alertReceiverDO.getDateCreated()); alertReceiverDTO.setDateUpdated(alertReceiverDO.getDateUpdated()); + alertReceiverDTO.setNamespaceId(alertReceiverDO.getNamespaceId()); return alertReceiverDTO; }) .orElse(null); diff --git a/shenyu-admin/src/main/resources/application-h2.yml b/shenyu-admin/src/main/resources/application-h2.yml index 146558beae9d..86c8ad1f725d 100644 --- a/shenyu-admin/src/main/resources/application-h2.yml +++ b/shenyu-admin/src/main/resources/application-h2.yml @@ -20,6 +20,8 @@ shenyu: init_enable: true spring: + jpa: + database: MYSQL datasource: url: jdbc:h2:mem:${HOME:${HOMEDRIVE}${HOMEPATH}}/shenyu;DB_CLOSE_DELAY=-1;MODE=MySQL; username: sa diff --git a/shenyu-admin/src/main/resources/application-mysql.yml b/shenyu-admin/src/main/resources/application-mysql.yml index 73c9a817a103..e4930963b79f 100755 --- a/shenyu-admin/src/main/resources/application-mysql.yml +++ b/shenyu-admin/src/main/resources/application-mysql.yml @@ -19,6 +19,8 @@ shenyu: init_enable: true spring: + jpa: + database: MYSQL datasource: url: jdbc:mysql://localhost:3306/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true username: root diff --git a/shenyu-admin/src/main/resources/application-ob.yml b/shenyu-admin/src/main/resources/application-ob.yml index e6aec6a11411..21da16900d6f 100755 --- a/shenyu-admin/src/main/resources/application-ob.yml +++ b/shenyu-admin/src/main/resources/application-ob.yml @@ -19,6 +19,8 @@ shenyu: init_enable: true spring: + jpa: + database: MYSQL datasource: url: jdbc:oceanbase://localhost:2881/shenyu username: root diff --git a/shenyu-admin/src/main/resources/application-og.yml b/shenyu-admin/src/main/resources/application-og.yml index 81f30175be38..f47c67233196 100644 --- a/shenyu-admin/src/main/resources/application-og.yml +++ b/shenyu-admin/src/main/resources/application-og.yml @@ -19,6 +19,8 @@ shenyu: init_enable: true spring: + jpa: + database: POSTGRESQL datasource: url: jdbc:opengauss://localhost:5432/shenyu username: root diff --git a/shenyu-admin/src/main/resources/application-oracle.yml b/shenyu-admin/src/main/resources/application-oracle.yml index 007c966659a3..8eae5956e204 100644 --- a/shenyu-admin/src/main/resources/application-oracle.yml +++ b/shenyu-admin/src/main/resources/application-oracle.yml @@ -19,6 +19,8 @@ shenyu: init_enable: true spring: + jpa: + database: ORACLE datasource: url: jdbc:oracle:thin:@localhost:1521/shenyu username: root diff --git a/shenyu-admin/src/main/resources/application-pg.yml b/shenyu-admin/src/main/resources/application-pg.yml index 05f26ae10431..af905777a3cf 100644 --- a/shenyu-admin/src/main/resources/application-pg.yml +++ b/shenyu-admin/src/main/resources/application-pg.yml @@ -19,6 +19,8 @@ shenyu: init_enable: true spring: + jpa: + database: POSTGRESQL datasource: url: jdbc:postgresql://localhost:5432/shenyu username: postgres diff --git a/shenyu-admin/src/main/resources/application.yml b/shenyu-admin/src/main/resources/application.yml index 6d2c3af3bfe2..7f2def099a0a 100755 --- a/shenyu-admin/src/main/resources/application.yml +++ b/shenyu-admin/src/main/resources/application.yml @@ -22,6 +22,17 @@ spring: name: shenyu-admin profiles: active: h2 + jpa: + open-in-view: false + show-sql: false + hibernate: + ddl-auto: none + properties: + hibernate: + jdbc: + batch_size: 30 + order_inserts: true + order_updates: true thymeleaf: cache: true encoding: utf-8 @@ -244,3 +255,5 @@ logging: org.apache.shenyu.lottery: info org.apache.shenyu: info # org.apache.shenyu.admin.utils.HttpUtils: debug + org.hibernate.SQL: info + org.hibernate.orm.jdbc.bind: info diff --git a/shenyu-admin/src/main/resources/mappers/app-auth-sqlmap.xml b/shenyu-admin/src/main/resources/mappers/app-auth-sqlmap.xml index 4923c18132c9..2c83e41a3f9c 100644 --- a/shenyu-admin/src/main/resources/mappers/app-auth-sqlmap.xml +++ b/shenyu-admin/src/main/resources/mappers/app-auth-sqlmap.xml @@ -45,7 +45,7 @@ date_updated - SELECT FROM app_auth diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ApiControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ApiControllerTest.java index f7e13afe624b..d2937821d65b 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ApiControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ApiControllerTest.java @@ -19,7 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.exception.ExceptionHandlers; -import org.apache.shenyu.admin.mapper.ApiMapper; +import org.apache.shenyu.admin.jpa.repository.ApiRepository; import org.apache.shenyu.admin.model.dto.ApiDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -70,7 +70,7 @@ public final class ApiControllerTest { private ApiService apiService; @Mock - private ApiMapper apiMapper; + private ApiRepository apiRepository; private ApiVO apiVO; @@ -217,8 +217,8 @@ public void testUpdateApi() throws Exception { apiDTO.setDocument("document"); apiDTO.setExt("ext"); apiDTO.setId("123"); - when(SpringBeanUtils.getInstance().getBean(ApiMapper.class)).thenReturn(apiMapper); - when(apiMapper.existed(apiDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(ApiRepository.class)).thenReturn(apiRepository); + when(apiRepository.existed(apiDTO.getId())).thenReturn(true); given(this.apiService.createOrUpdate(apiDTO)).willReturn(ShenyuResultMessage.UPDATE_SUCCESS); this.mockMvc.perform(MockMvcRequestBuilders.put("/api/{id}", apiDTO.getId()) .contentType(MediaType.APPLICATION_JSON) diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java index 14244f643b0c..871fdb7e8b07 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/AppAuthControllerTest.java @@ -17,11 +17,11 @@ package org.apache.shenyu.admin.controller; -import java.util.Date; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.AppAuthRepository; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.mapper.AppAuthMapper; import org.apache.shenyu.admin.mapper.AuthPathMapper; -import org.apache.shenyu.admin.mapper.NamespaceMapper; import org.apache.shenyu.admin.model.dto.AppAuthDTO; import org.apache.shenyu.admin.model.dto.AuthApplyDTO; import org.apache.shenyu.admin.model.dto.AuthPathDTO; @@ -60,6 +60,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Date; import java.util.List; import static org.apache.shenyu.common.constant.Constants.SYS_DEFAULT_NAMESPACE_ID; @@ -92,7 +93,10 @@ public final class AppAuthControllerTest { private AppAuthMapper appAuthMapper; @Mock - private NamespaceMapper namespaceMapper; + private AppAuthRepository appAuthRepository; + + @Mock + private NamespaceRepository namespaceRepository; private final AppAuthVO appAuthVO = new AppAuthVO("0001", "testAppKey", "testAppSecret", "testUser", "18600000000", "{\"extInfo\": \"test\"}", @@ -103,6 +107,7 @@ public final class AppAuthControllerTest { public void setUp() { this.mockMvc = MockMvcBuilders.standaloneSetup(appAuthController) .setControllerAdvice(appAuthMapper) + .setControllerAdvice(appAuthRepository) .setControllerAdvice(authPathMapper) .build(); } @@ -147,8 +152,8 @@ public void testApply() throws Exception { given(this.appAuthService.applyCreate(authApplyDTO)).willReturn( ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS)); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); this.mockMvc.perform(MockMvcRequestBuilders.post("/appAuth/apply") .contentType(MediaType.APPLICATION_JSON) .content(GsonUtils.getInstance().toJson(authApplyDTO))) @@ -172,8 +177,8 @@ public void testApplyWithAppKey() throws Exception { authApplyDTO.setPathList(pathList); authApplyDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.appAuthService.applyUpdate(authApplyDTO)).willReturn( ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS)); this.mockMvc.perform(MockMvcRequestBuilders.post("/appAuth/apply") @@ -200,8 +205,8 @@ public void testFindPageByQuery() throws Exception { final CommonPager commonPager = new CommonPager<>(pageParameter, Collections.singletonList(appAuthVO)); given(this.appAuthService.listByPage(appAuthQuery)).willReturn(commonPager); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); this.mockMvc.perform(MockMvcRequestBuilders.get("/appAuth/findPageByQuery") .param("appKey", "testAppKey") .param("phone", "18600000000") @@ -237,10 +242,10 @@ public void testUpdateDetail() throws Exception { ShenyuAdminResult.success(ShenyuResultMessage.UPDATE_SUCCESS)); ConfigurableApplicationContext context = mock(ConfigurableApplicationContext.class); SpringBeanUtils.getInstance().setApplicationContext(context); - when(SpringBeanUtils.getInstance().getBean(AppAuthMapper.class)).thenReturn(appAuthMapper); - when(appAuthMapper.existed(appAuthDTO.getId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(AppAuthRepository.class)).thenReturn(appAuthRepository); + when(appAuthRepository.existed(appAuthDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); this.mockMvc.perform(MockMvcRequestBuilders.post("/appAuth/updateDetail") .contentType(MediaType.APPLICATION_JSON) .content(GsonUtils.getInstance().toJson(appAuthDTO))) @@ -278,8 +283,8 @@ public void testUpdateDetailPath() throws Exception { authPathWarpDTO.setAuthPathDTOList(authPathDTOS); ConfigurableApplicationContext context = mock(ConfigurableApplicationContext.class); SpringBeanUtils.getInstance().setApplicationContext(context); - when(SpringBeanUtils.getInstance().getBean(AppAuthMapper.class)).thenReturn(appAuthMapper); - when(appAuthMapper.existed(authPathWarpDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(AppAuthRepository.class)).thenReturn(appAuthRepository); + when(appAuthRepository.existed(authPathWarpDTO.getId())).thenReturn(true); given(this.appAuthService.updateDetailPath(authPathWarpDTO)).willReturn(ShenyuAdminResult.success()); this.mockMvc.perform(MockMvcRequestBuilders.post("/appAuth/updateDetailPath") .contentType(MediaType.APPLICATION_JSON) diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/MetaDataControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/MetaDataControllerTest.java index b5d5e65b0c6a..9b9647ab62e7 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/MetaDataControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/MetaDataControllerTest.java @@ -19,8 +19,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.exception.ExceptionHandlers; -import org.apache.shenyu.admin.mapper.MetaDataMapper; -import org.apache.shenyu.admin.mapper.NamespaceMapper; +import org.apache.shenyu.admin.jpa.repository.MetaDataRepository; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.BatchNamespaceCommonDTO; import org.apache.shenyu.admin.model.dto.MetaDataDTO; @@ -79,10 +79,10 @@ public final class MetaDataControllerTest { private MetaDataService metaDataService; @Mock - private MetaDataMapper metaDataMapper; + private MetaDataRepository metaDataRepository; @Mock - private NamespaceMapper namespaceMapper; + private NamespaceRepository namespaceRepository; private final MetaDataVO metaDataVO = new MetaDataVO("appName", "appPath", "desc", "rpcType", "serviceName", "methodName", "types", "rpcExt", "1", DateUtils.localDateTimeToString(LocalDateTime.now()), DateUtils.localDateTimeToString(LocalDateTime.now()), @@ -167,11 +167,11 @@ public void testCreateOrUpdate() throws Exception { metaDataDTO.setEnabled(false); metaDataDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(MetaDataMapper.class)).thenReturn(metaDataMapper); - when(metaDataMapper.existed(metaDataDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(MetaDataRepository.class)).thenReturn(metaDataRepository); + when(metaDataRepository.existed(metaDataDTO.getId())).thenReturn(true); given(this.metaDataService.createOrUpdate(metaDataDTO)).willReturn(ShenyuResultMessage.UPDATE_SUCCESS); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); this.mockMvc.perform(MockMvcRequestBuilders.post("/meta-data/createOrUpdate") .contentType(MediaType.APPLICATION_JSON) .content(GsonUtils.getInstance().toJson(metaDataDTO))) @@ -194,10 +194,10 @@ public void testCreateOrUpdateWithError() throws Exception { metaDataDTO.setEnabled(false); metaDataDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(MetaDataMapper.class)).thenReturn(metaDataMapper); - when(metaDataMapper.existed(metaDataDTO.getId())).thenReturn(null); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(MetaDataRepository.class)).thenReturn(metaDataRepository); + when(metaDataRepository.existed(metaDataDTO.getId())).thenReturn(null); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); this.mockMvc.perform(MockMvcRequestBuilders.post("/meta-data/createOrUpdate") .contentType(MediaType.APPLICATION_JSON) .content(GsonUtils.getInstance().toJson(metaDataDTO))) @@ -214,8 +214,8 @@ public void testBatchDeleted() throws Exception { ids.add("2"); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); given(this.metaDataService.deleteByIdsAndNamespaceId(ids, SYS_DEFAULT_NAMESPACE_ID)).willReturn(2); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); final BatchNamespaceCommonDTO batchNamespaceCommonDTO = new BatchNamespaceCommonDTO(); batchNamespaceCommonDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID); batchNamespaceCommonDTO.setIds(ids); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginControllerTest.java index 897ac861f9f4..a7e75f773dd0 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginControllerTest.java @@ -20,6 +20,7 @@ import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.exception.ExceptionHandlers; +import org.apache.shenyu.admin.jpa.repository.PluginRepository; import org.apache.shenyu.admin.mapper.PluginMapper; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.PluginDTO; @@ -84,6 +85,9 @@ public final class PluginControllerTest { @Mock private PluginMapper pluginMapper; + @Mock + private PluginRepository pluginRepository; + private PluginVO pluginVO; @BeforeEach @@ -147,8 +151,8 @@ public void testCreatePlugin() throws Exception { pluginDTO.setRole("1"); pluginDTO.setSort(100); pluginDTO.setFile(Base64.getEncoder().encodeToString(file.getBytes())); - when(SpringBeanUtils.getInstance().getBean(PluginMapper.class)).thenReturn(pluginMapper); - when(pluginMapper.existed(pluginDTO.getId())).thenReturn(false); + when(SpringBeanUtils.getInstance().getBean(PluginRepository.class)).thenReturn(pluginRepository); + when(pluginRepository.existed(pluginDTO.getId())).thenReturn(false); given(this.pluginService.createOrUpdate(pluginDTO)).willReturn(ShenyuResultMessage.CREATE_SUCCESS); this.mockMvc.perform(MockMvcRequestBuilders.multipart("/plugin-template") @@ -162,7 +166,7 @@ public void testCreatePlugin() throws Exception { .andReturn(); // update success pluginDTO.setId("123"); - when(pluginMapper.existed(pluginDTO.getId())).thenReturn(true); + when(pluginRepository.existed(pluginDTO.getId())).thenReturn(true); given(this.pluginService.createOrUpdate(pluginDTO)).willReturn(ShenyuResultMessage.UPDATE_SUCCESS); this.mockMvc.perform(MockMvcRequestBuilders.multipart("/plugin-template") .param("file", pluginDTO.getFile()) @@ -197,8 +201,8 @@ public void testUpdatePlugin() throws Exception { pluginDTO.setEnabled(true); pluginDTO.setRole("1"); pluginDTO.setSort(100); - when(SpringBeanUtils.getInstance().getBean(PluginMapper.class)).thenReturn(pluginMapper); - when(pluginMapper.existed(pluginDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(PluginRepository.class)).thenReturn(pluginRepository); + when(pluginRepository.existed(pluginDTO.getId())).thenReturn(true); given(this.pluginService.createOrUpdate(pluginDTO)).willReturn(ShenyuResultMessage.UPDATE_SUCCESS); this.mockMvc.perform(MockMvcRequestBuilders.put("/plugin-template/{id}", pluginDTO.getId()) .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE) @@ -209,7 +213,7 @@ public void testUpdatePlugin() throws Exception { .andExpect(status().isOk()) .andExpect(jsonPath("$.message", is(ShenyuResultMessage.UPDATE_SUCCESS))) .andReturn(); - when(pluginMapper.existed(pluginDTO.getId())).thenReturn(null); + when(pluginRepository.existed(pluginDTO.getId())).thenReturn(null); this.mockMvc.perform(MockMvcRequestBuilders.put("/plugin-template/{id}", pluginDTO.getId()) .contentType(MediaType.MULTIPART_FORM_DATA_VALUE) .param("name", pluginDTO.getName()) @@ -218,7 +222,7 @@ public void testUpdatePlugin() throws Exception { .param("sort", String.valueOf(pluginDTO.getSort()))) .andExpect(jsonPath("$.message", Matchers.containsString("Request error! invalid argument"))) .andReturn(); - when(pluginMapper.existed(pluginDTO.getId())).thenReturn(true); + when(pluginRepository.existed(pluginDTO.getId())).thenReturn(true); given(this.pluginService.createOrUpdate(pluginDTO)).willReturn(ShenyuResultMessage.CREATE_SUCCESS); this.mockMvc.perform(MockMvcRequestBuilders.put("/plugin-template/{id}", pluginDTO.getId()) .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE) diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginHandleControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginHandleControllerTest.java index 362cbbd52088..909884d81aa4 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginHandleControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/PluginHandleControllerTest.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.exception.ExceptionHandlers; +import org.apache.shenyu.admin.jpa.repository.PluginHandleRepository; import org.apache.shenyu.admin.mapper.PluginHandleMapper; import org.apache.shenyu.admin.model.dto.PluginHandleDTO; import org.apache.shenyu.admin.model.page.CommonPager; @@ -69,6 +70,9 @@ public final class PluginHandleControllerTest { @Mock private PluginHandleMapper handleMapper; + @Mock + private PluginHandleRepository pluginHandleRepository; + private final PluginHandleVO pluginHandleVO = new PluginHandleVO("1", "2", "3", "label", 1, 1, 1, null, DateUtils.localDateTimeToString(LocalDateTime.now()), DateUtils.localDateTimeToString(LocalDateTime.now()), new ArrayList<>()); @@ -138,8 +142,8 @@ public void testUpdatePluginHandle() throws Exception { pluginHandleDTO.setType(1); pluginHandleDTO.setSort(1); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(PluginHandleMapper.class)).thenReturn(handleMapper); - when(handleMapper.existed(pluginHandleDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(PluginHandleRepository.class)).thenReturn(pluginHandleRepository); + when(pluginHandleRepository.existed(pluginHandleDTO.getId())).thenReturn(true); given(this.pluginHandleService.createOrUpdate(pluginHandleDTO)).willReturn(1); this.mockMvc.perform(MockMvcRequestBuilders.put("/plugin-handle/{id}", "1") .contentType(MediaType.APPLICATION_JSON) diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RoleControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RoleControllerTest.java index 56256cdfe4fb..370c0f41f61b 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RoleControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RoleControllerTest.java @@ -17,7 +17,7 @@ package org.apache.shenyu.admin.controller; -import org.apache.shenyu.admin.mapper.RoleMapper; +import org.apache.shenyu.admin.jpa.repository.RoleRepository; import org.apache.shenyu.admin.model.dto.RoleDTO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; @@ -72,9 +72,9 @@ public class RoleControllerTest { @Mock private RoleService roleService; - + @Mock - private RoleMapper roleMapper; + private RoleRepository roleRepository; @BeforeEach public void setUp() { @@ -126,8 +126,8 @@ public void testCreateRole() throws Exception { RoleDTO roleDTO = buildRoleDTO(); given(roleService.createOrUpdate(roleDTO)).willReturn(1); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(RoleMapper.class)).thenReturn(roleMapper); - when(roleMapper.existed(roleDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(RoleRepository.class)).thenReturn(roleRepository); + when(roleRepository.existed(roleDTO.getId())).thenReturn(true); this.mockMvc.perform(MockMvcRequestBuilders.post("/role") .contentType(MediaType.APPLICATION_JSON) .content(GsonUtils.getInstance().toJson(roleDTO))) @@ -149,8 +149,8 @@ public void testUpdateRole() throws Exception { RoleDTO roleDTO = buildRoleDTO(); given(roleService.createOrUpdate(roleDTO)).willReturn(1); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(RoleMapper.class)).thenReturn(roleMapper); - when(roleMapper.existed(roleDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(RoleRepository.class)).thenReturn(roleRepository); + when(roleRepository.existed(roleDTO.getId())).thenReturn(true); this.mockMvc.perform(MockMvcRequestBuilders.put("/role/{id}", roleDTO.getId()) .contentType(MediaType.APPLICATION_JSON) .content(GsonUtils.getInstance().toJson(roleDTO))) diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RuleControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RuleControllerTest.java index 56456d4736e9..b0854f93898f 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RuleControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RuleControllerTest.java @@ -18,9 +18,9 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.exception.ExceptionHandlers; -import org.apache.shenyu.admin.mapper.NamespaceMapper; -import org.apache.shenyu.admin.mapper.RuleMapper; -import org.apache.shenyu.admin.mapper.SelectorMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; +import org.apache.shenyu.admin.jpa.repository.RuleRepository; +import org.apache.shenyu.admin.jpa.repository.SelectorRepository; import org.apache.shenyu.admin.model.custom.UserInfo; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.BatchNamespaceCommonDTO; @@ -81,13 +81,13 @@ public final class RuleControllerTest { private RuleService ruleService; @Mock - private RuleMapper ruleMapper; + private RuleRepository ruleRepository; @Mock - private SelectorMapper selectorMapper; + private SelectorRepository selectorRepository; @Mock - private NamespaceMapper namespaceMapper; + private NamespaceRepository namespaceRepository; private final RuleConditionVO rCondition1 = new RuleConditionVO( "888", "666", "uri", "Uniform", "match", "match", "/", "/http/test/**", DateUtils.localDateTimeToString(LocalDateTime.now()), DateUtils.localDateTimeToString(LocalDateTime.now()) @@ -162,12 +162,12 @@ public void testCreateRule() throws Exception { .namespaceId(SYS_DEFAULT_NAMESPACE_ID) .build(); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(RuleMapper.class)).thenReturn(ruleMapper); - when(ruleMapper.existed(ruleDTO.getId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(SelectorMapper.class)).thenReturn(selectorMapper); - when(selectorMapper.existed(ruleDTO.getSelectorId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(RuleRepository.class)).thenReturn(ruleRepository); + when(ruleRepository.existed(ruleDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(SelectorRepository.class)).thenReturn(selectorRepository); + when(selectorRepository.existed(ruleDTO.getSelectorId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.ruleService.createOrUpdate(ruleDTO)).willReturn(1); this.mockMvc.perform(MockMvcRequestBuilders.post("/rule", ruleDTO) .contentType(MediaType.APPLICATION_JSON) @@ -205,12 +205,12 @@ public void testUpdateRule() throws Exception { .namespaceId(SYS_DEFAULT_NAMESPACE_ID) .build(); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(RuleMapper.class)).thenReturn(ruleMapper); - when(ruleMapper.existed(ruleDTO.getId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(SelectorMapper.class)).thenReturn(selectorMapper); - when(selectorMapper.existed(ruleDTO.getSelectorId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(RuleRepository.class)).thenReturn(ruleRepository); + when(ruleRepository.existed(ruleDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(SelectorRepository.class)).thenReturn(selectorRepository); + when(selectorRepository.existed(ruleDTO.getSelectorId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.ruleService.createOrUpdate(ruleDTO)).willReturn(1); this.mockMvc.perform(MockMvcRequestBuilders.put("/rule/{id}", "666") .contentType(MediaType.APPLICATION_JSON) @@ -227,8 +227,8 @@ public void testDeleteRules() throws Exception { batchNamespaceCommonDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID); batchNamespaceCommonDTO.setIds(Collections.singletonList("111")); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.ruleService.deleteByIdsAndNamespaceId(Collections.singletonList("111"), SYS_DEFAULT_NAMESPACE_ID)).willReturn(1); this.mockMvc.perform(MockMvcRequestBuilders.delete("/rule/batch") .contentType(MediaType.APPLICATION_JSON) @@ -253,12 +253,12 @@ public void testEnableRule() throws Exception { .namespaceId(SYS_DEFAULT_NAMESPACE_ID) .build(); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(RuleMapper.class)).thenReturn(ruleMapper); - when(ruleMapper.existed(ruleDTO.getId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(SelectorMapper.class)).thenReturn(selectorMapper); - when(selectorMapper.existed(ruleDTO.getSelectorId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(RuleRepository.class)).thenReturn(ruleRepository); + when(ruleRepository.existed(ruleDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(SelectorRepository.class)).thenReturn(selectorRepository); + when(selectorRepository.existed(ruleDTO.getSelectorId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.ruleService.enabledByIdsAndNamespaceId(Arrays.asList(ruleDTO.getId()), false, SYS_DEFAULT_NAMESPACE_ID)).willReturn(true); BatchCommonDTO batchCommonDTO = new BatchCommonDTO(); batchCommonDTO.setIds(Arrays.asList(ruleDTO.getId())); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/SelectorControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/SelectorControllerTest.java index 40eb278535cf..c72f7bd59996 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/SelectorControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/SelectorControllerTest.java @@ -18,9 +18,9 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.exception.ExceptionHandlers; -import org.apache.shenyu.admin.mapper.NamespaceMapper; -import org.apache.shenyu.admin.mapper.PluginMapper; -import org.apache.shenyu.admin.mapper.SelectorMapper; +import org.apache.shenyu.admin.jpa.repository.NamespaceRepository; +import org.apache.shenyu.admin.jpa.repository.PluginRepository; +import org.apache.shenyu.admin.jpa.repository.SelectorRepository; import org.apache.shenyu.admin.model.custom.UserInfo; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.BatchNamespaceCommonDTO; @@ -79,13 +79,13 @@ public final class SelectorControllerTest { private SelectorService selectorService; @Mock - private SelectorMapper selectorMapper; + private SelectorRepository selectorRepository; @Mock - private PluginMapper pluginMapper; + private PluginRepository pluginRepository; @Mock - private NamespaceMapper namespaceMapper; + private NamespaceRepository namespaceRepository; private final SelectorVO selectorVO = new SelectorVO("1", "2", "selector-1", MatchModeEnum.AND.getCode(), MatchModeEnum.AND.getName(), SelectorTypeEnum.FULL_FLOW.getCode(), SelectorTypeEnum.FULL_FLOW.getName(), @@ -133,12 +133,12 @@ public void createSelector() throws Exception { .namespaceId(SYS_DEFAULT_NAMESPACE_ID) .build(); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(SelectorMapper.class)).thenReturn(selectorMapper); - when(selectorMapper.existed(selectorDTO.getId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(PluginMapper.class)).thenReturn(pluginMapper); - when(pluginMapper.existed(selectorDTO.getPluginId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(SelectorRepository.class)).thenReturn(selectorRepository); + when(selectorRepository.existed(selectorDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(PluginRepository.class)).thenReturn(pluginRepository); + when(pluginRepository.existed(selectorDTO.getPluginId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.selectorService.createOrUpdate(selectorDTO)).willReturn(1); this.mockMvc.perform(MockMvcRequestBuilders.post("/selector") .contentType(MediaType.APPLICATION_JSON) @@ -163,12 +163,12 @@ public void updateSelector() throws Exception { .namespaceId(SYS_DEFAULT_NAMESPACE_ID) .build(); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(SelectorMapper.class)).thenReturn(selectorMapper); - when(selectorMapper.existed(selectorDTO.getId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(PluginMapper.class)).thenReturn(pluginMapper); - when(pluginMapper.existed(selectorDTO.getPluginId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(SelectorRepository.class)).thenReturn(selectorRepository); + when(selectorRepository.existed(selectorDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(PluginRepository.class)).thenReturn(pluginRepository); + when(pluginRepository.existed(selectorDTO.getPluginId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.selectorService.createOrUpdate(selectorDTO)).willReturn(1); this.mockMvc.perform(MockMvcRequestBuilders.put("/selector/{id}", "123") .contentType(MediaType.APPLICATION_JSON) @@ -181,8 +181,8 @@ public void updateSelector() throws Exception { @Test public void deleteSelector() throws Exception { SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.selectorService.deleteByNamespaceId(Collections.singletonList("123"), SYS_DEFAULT_NAMESPACE_ID)).willReturn(1); final BatchNamespaceCommonDTO batchNamespaceCommonDTO = new BatchNamespaceCommonDTO(); batchNamespaceCommonDTO.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID); @@ -199,8 +199,8 @@ public void deleteSelector() throws Exception { public void detailSelector() throws Exception { SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(NamespaceMapper.class)).thenReturn(namespaceMapper); - when(namespaceMapper.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(NamespaceRepository.class)).thenReturn(namespaceRepository); + when(namespaceRepository.existed(SYS_DEFAULT_NAMESPACE_ID)).thenReturn(true); given(this.selectorService.findById("1")).willReturn(selectorVO); this.mockMvc.perform(MockMvcRequestBuilders.get("/selector/{id}/", "1")) @@ -225,10 +225,10 @@ public void enableSelector() throws Exception { .namespaceId(SYS_DEFAULT_NAMESPACE_ID) .build(); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(SelectorMapper.class)).thenReturn(selectorMapper); - when(selectorMapper.existed(selectorDTO.getId())).thenReturn(true); - when(SpringBeanUtils.getInstance().getBean(PluginMapper.class)).thenReturn(pluginMapper); - when(pluginMapper.existed(selectorDTO.getPluginId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(SelectorRepository.class)).thenReturn(selectorRepository); + when(selectorRepository.existed(selectorDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(PluginRepository.class)).thenReturn(pluginRepository); + when(pluginRepository.existed(selectorDTO.getPluginId())).thenReturn(true); given(this.selectorService.enabledByIdsAndNamespaceId(Arrays.asList(selectorDTO.getId()), false, SYS_DEFAULT_NAMESPACE_ID)).willReturn(true); BatchCommonDTO batchCommonDTO = new BatchCommonDTO(); batchCommonDTO.setIds(Arrays.asList(selectorDTO.getId())); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ShenyuDictControllerTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ShenyuDictControllerTest.java index e483b643ad8f..e3d6011163f5 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ShenyuDictControllerTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ShenyuDictControllerTest.java @@ -18,7 +18,7 @@ package org.apache.shenyu.admin.controller; import org.apache.shenyu.admin.exception.ExceptionHandlers; -import org.apache.shenyu.admin.mapper.ShenyuDictMapper; +import org.apache.shenyu.admin.jpa.repository.ShenyuDictRepository; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.ShenyuDictDTO; import org.apache.shenyu.admin.model.page.CommonPager; @@ -71,7 +71,7 @@ public final class ShenyuDictControllerTest { private ShenyuDictService shenyuDictService; @Mock - private ShenyuDictMapper shenyuDictMapper; + private ShenyuDictRepository shenyuDictRepository; private final ShenyuDictVO shenyuDictVO = new ShenyuDictVO("123", "1", "t", "t_n", "1", "desc", 2, true, DateUtils.localDateTimeToString(LocalDateTime.now()), DateUtils.localDateTimeToString(LocalDateTime.now())); @@ -126,8 +126,8 @@ public void testCreateShenyuDict() throws Exception { ShenyuDictDTO shenyuDictDTO = buildTestDict(); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(ShenyuDictMapper.class)).thenReturn(shenyuDictMapper); - when(shenyuDictMapper.existed(shenyuDictDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(ShenyuDictRepository.class)).thenReturn(shenyuDictRepository); + when(shenyuDictRepository.existed(shenyuDictDTO.getId())).thenReturn(true); given(this.shenyuDictService.createOrUpdate(shenyuDictDTO)).willReturn(1); this.mockMvc.perform(MockMvcRequestBuilders.post("/shenyu-dict/") @@ -143,8 +143,8 @@ public void testUpdateShenyuDict() throws Exception { ShenyuDictDTO shenyuDictDTO = buildTestDict(); SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class)); - when(SpringBeanUtils.getInstance().getBean(ShenyuDictMapper.class)).thenReturn(shenyuDictMapper); - when(shenyuDictMapper.existed(shenyuDictDTO.getId())).thenReturn(true); + when(SpringBeanUtils.getInstance().getBean(ShenyuDictRepository.class)).thenReturn(shenyuDictRepository); + when(shenyuDictRepository.existed(shenyuDictDTO.getId())).thenReturn(true); given(this.shenyuDictService.createOrUpdate(shenyuDictDTO)).willReturn(1); this.mockMvc.perform(MockMvcRequestBuilders.put("/shenyu-dict/{id}", "123") diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/BooleanConverterTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/BooleanConverterTest.java new file mode 100644 index 000000000000..42116df6906e --- /dev/null +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/BooleanConverterTest.java @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.converter; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + + +class BooleanConverterTest { + + private final BooleanConverter converter = new BooleanConverter(); + + @Test + void testConvertToDatabaseColumnTrue() { + Integer result = converter.convertToDatabaseColumn(true); + assertEquals(Integer.valueOf(1), result); + } + + @Test + void testConvertToDatabaseColumnFalse() { + Integer result = converter.convertToDatabaseColumn(false); + assertEquals(Integer.valueOf(0), result); + } + + @Test + void testConvertToDatabaseColumnNull() { + Integer result = converter.convertToDatabaseColumn(null); + assertNull(result); + } + + @Test + void testConvertToEntityAttributeOne() { + Boolean result = converter.convertToEntityAttribute(1); + assertTrue(result); + } + + @Test + void testConvertToEntityAttributeZero() { + Boolean result = converter.convertToEntityAttribute(0); + assertFalse(result); + } + + @Test + void testConvertToEntityAttributeOtherValue() { + Boolean result = converter.convertToEntityAttribute(2); + assertFalse(result); + } + + @Test + void testConvertToEntityAttributeNull() { + Boolean result = converter.convertToEntityAttribute(null); + assertNull(result); + } +} diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/ListByteConverterTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/ListByteConverterTest.java new file mode 100644 index 000000000000..a70e097dca2f --- /dev/null +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/ListByteConverterTest.java @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.converter; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + + +class ListByteConverterTest { + + private final ListByteConverter converter = new ListByteConverter(); + + @Test + void testConvertToDatabaseColumnNull() { + String result = converter.convertToDatabaseColumn(null); + assertNull(result); + } + + @Test + void testConvertToDatabaseColumnEmpty() { + String result = converter.convertToDatabaseColumn(Collections.emptyList()); + assertEquals("[]", result); + } + + @Test + void testConvertToDatabaseColumnWithValues() { + List list = Arrays.asList((byte) 1, (byte) 2, (byte) 3); + String result = converter.convertToDatabaseColumn(list); + assertEquals("[1,2,3]", result); + } + + @Test + void testConvertToEntityAttributeNull() { + List result = converter.convertToEntityAttribute(null); + assertNull(result); + } + + @Test + void testConvertToEntityAttributeEmpty() { + List result = converter.convertToEntityAttribute("[]"); + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + void testConvertToEntityAttributeWithValues() { + List result = converter.convertToEntityAttribute("[1,2,3]"); + assertNotNull(result); + assertEquals(3, result.size()); + assertEquals(Byte.valueOf((byte) 1), result.get(0)); + assertEquals(Byte.valueOf((byte) 2), result.get(1)); + assertEquals(Byte.valueOf((byte) 3), result.get(2)); + } + + @Test + void testRoundTripConversion() { + List original = Arrays.asList((byte) 1, (byte) 2, (byte) 3); + String dbValue = converter.convertToDatabaseColumn(original); + List result = converter.convertToEntityAttribute(dbValue); + assertEquals(original, result); + } +} diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/MapStringConverterTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/MapStringConverterTest.java new file mode 100644 index 000000000000..00c52fc169c9 --- /dev/null +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/converter/MapStringConverterTest.java @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.converter; + +import org.junit.jupiter.api.Test; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class MapStringConverterTest { + + private final MapStringConverter converter = new MapStringConverter(); + + @Test + void testConvertToDatabaseColumnNull() { + String result = converter.convertToDatabaseColumn(null); + assertNull(result); + } + + @Test + void testConvertToDatabaseColumnEmpty() { + String result = converter.convertToDatabaseColumn(Collections.emptyMap()); + assertEquals("{}", result); + } + + @Test + void testConvertToDatabaseColumnWithValues() { + Map map = new HashMap<>(); + map.put("key1", "value1"); + map.put("key2", "value2"); + String result = converter.convertToDatabaseColumn(map); + assertTrue(result.contains("key1")); + assertTrue(result.contains("value1")); + assertTrue(result.contains("key2")); + assertTrue(result.contains("value2")); + } + + @Test + void testConvertToEntityAttributeNull() { + Map result = converter.convertToEntityAttribute(null); + assertNull(result); + } + + @Test + void testConvertToEntityAttributeEmpty() { + Map result = converter.convertToEntityAttribute("{}"); + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + void testConvertToEntityAttributeWithValues() { + String json = "{\"key1\":\"value1\",\"key2\":\"value2\"}"; + Map result = converter.convertToEntityAttribute(json); + assertNotNull(result); + assertEquals(2, result.size()); + assertEquals("value1", result.get("key1")); + assertEquals("value2", result.get("key2")); + } + + @Test + void testRoundTripConversion() { + Map original = new HashMap<>(); + original.put("key1", "value1"); + original.put("key2", "value2"); + String dbValue = converter.convertToDatabaseColumn(original); + Map result = converter.convertToEntityAttribute(dbValue); + assertEquals(original, result); + } +} diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/AiProxyApiKeyRepositoryTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/AiProxyApiKeyRepositoryTest.java new file mode 100644 index 000000000000..228d6dc30b4b --- /dev/null +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/AiProxyApiKeyRepositoryTest.java @@ -0,0 +1,211 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import jakarta.annotation.Resource; +import org.apache.shenyu.admin.AbstractSpringIntegrationTest; +import org.apache.shenyu.admin.model.entity.ProxyApiKeyDO; +import org.apache.shenyu.admin.model.query.ProxyApiKeyQuery; +import org.apache.shenyu.common.utils.UUIDUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.transaction.annotation.Transactional; + +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; + +class AiProxyApiKeyRepositoryTest extends AbstractSpringIntegrationTest { + + @Resource + private AiProxyApiKeyRepository aiProxyApiKeyRepository; + + @Test + @Transactional + void updateEnableBatch() { + ProxyApiKeyDO entity1 = buildProxyApiKeyDO(); + ProxyApiKeyDO entity2 = buildProxyApiKeyDO(); + ProxyApiKeyDO entity3 = buildProxyApiKeyDO(); + entity3.setEnabled(false); + + ProxyApiKeyDO saved1 = aiProxyApiKeyRepository.save(entity1); + ProxyApiKeyDO saved2 = aiProxyApiKeyRepository.save(entity2); + ProxyApiKeyDO saved3 = aiProxyApiKeyRepository.save(entity3); + + List idsToUpdate = Arrays.asList(saved1.getId(), saved2.getId(), saved3.getId()); + int updatedCount = aiProxyApiKeyRepository.updateEnableBatch(idsToUpdate, false); + + Assertions.assertEquals(3, updatedCount); + + ProxyApiKeyDO updated1 = aiProxyApiKeyRepository.findById(saved1.getId()).orElse(null); + ProxyApiKeyDO updated2 = aiProxyApiKeyRepository.findById(saved2.getId()).orElse(null); + ProxyApiKeyDO updated3 = aiProxyApiKeyRepository.findById(saved3.getId()).orElse(null); + + Assertions.assertNotNull(updated1); + Assertions.assertFalse(updated1.getEnabled()); + Assertions.assertNotNull(updated2); + Assertions.assertFalse(updated2.getEnabled()); + Assertions.assertNotNull(updated3); + Assertions.assertFalse(updated3.getEnabled()); + } + + @Test + @Transactional + void pageByConditionWithAllConditions() { + for (int i = 0; i < 5; i++) { + ProxyApiKeyDO entity = buildProxyApiKeyDO(); + entity.setProxyApiKey("test-key-" + i); + entity.setEnabled(true); + entity.setNamespaceId("namespaceA"); + entity.setSelectorId("selector-1"); + aiProxyApiKeyRepository.save(entity); + } + + for (int i = 0; i < 3; i++) { + ProxyApiKeyDO entity = buildProxyApiKeyDO(); + entity.setProxyApiKey("other-key-" + i); + entity.setEnabled(false); + aiProxyApiKeyRepository.save(entity); + } + + ProxyApiKeyQuery query = new ProxyApiKeyQuery(); + query.setProxyApiKey("test-key-0"); + query.setEnabled(true); + query.setNamespaceId("namespaceA"); + query.setSelectorId("selector-1"); + + Page page = aiProxyApiKeyRepository.pageByCondition(query, PageRequest.of(0, 10)); + + Assertions.assertEquals(1, page.getTotalElements()); + Assertions.assertEquals("test-key-0", page.getContent().get(0).getProxyApiKey()); + } + + @Test + @Transactional + void pageByConditionWithNullConditions() { + for (int i = 0; i < 5; i++) { + aiProxyApiKeyRepository.save(buildProxyApiKeyDO()); + } + + ProxyApiKeyQuery query = new ProxyApiKeyQuery(); + + Page page = aiProxyApiKeyRepository.pageByCondition(query, PageRequest.of(0, 10)); + + Assertions.assertEquals(5, page.getTotalElements()); + } + + @Test + @Transactional + void pageByConditionWithEmptyStringConditions() { + for (int i = 0; i < 3; i++) { + ProxyApiKeyDO entity = buildProxyApiKeyDO(); + entity.setEnabled(true); + aiProxyApiKeyRepository.save(entity); + } + + ProxyApiKeyQuery query = new ProxyApiKeyQuery(); + query.setProxyApiKey(""); + query.setNamespaceId(""); + query.setSelectorId(""); + query.setEnabled(true); + + Page page = aiProxyApiKeyRepository.pageByCondition(query, PageRequest.of(0, 10)); + + Assertions.assertEquals(3, page.getTotalElements()); + } + + @Test + @Transactional + void pageByConditionWithPagination() { + int totalCount = 15; + for (int i = 0; i < totalCount; i++) { + aiProxyApiKeyRepository.save(buildProxyApiKeyDO()); + } + + ProxyApiKeyQuery query = new ProxyApiKeyQuery(); + int pageSize = 5; + + Page firstPage = aiProxyApiKeyRepository.pageByCondition(query, PageRequest.of(0, pageSize)); + Assertions.assertEquals(totalCount, firstPage.getTotalElements()); + Assertions.assertEquals(pageSize, firstPage.getContent().size()); + + Page secondPage = aiProxyApiKeyRepository.pageByCondition(query, PageRequest.of(1, pageSize)); + Assertions.assertEquals(totalCount, secondPage.getTotalElements()); + Assertions.assertEquals(pageSize, secondPage.getContent().size()); + + Page thirdPage = aiProxyApiKeyRepository.pageByCondition(query, PageRequest.of(2, pageSize)); + Assertions.assertEquals(totalCount, thirdPage.getTotalElements()); + Assertions.assertEquals(pageSize, thirdPage.getContent().size()); + } + + @Test + @Transactional + void pageByConditionWithOrderByDateUpdated() { + ProxyApiKeyDO entity1 = buildProxyApiKeyDO(); + aiProxyApiKeyRepository.save(entity1); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + + ProxyApiKeyDO entity2 = buildProxyApiKeyDO(); + aiProxyApiKeyRepository.save(entity2); + + ProxyApiKeyQuery query = new ProxyApiKeyQuery(); + Page page = aiProxyApiKeyRepository.pageByCondition(query, PageRequest.of(0, 10)); + + Assertions.assertEquals(2, page.getTotalElements()); + Assertions.assertTrue(page.getContent().get(0).getDateUpdated().after(page.getContent().get(1).getDateUpdated())); + } + + @Test + @Transactional + void existsBySelectorIdAndProxyApiKey() { + String selectorId = "selector-test"; + String proxyApiKey = "proxy-key-test"; + + ProxyApiKeyDO entity = buildProxyApiKeyDO(); + entity.setSelectorId(selectorId); + entity.setProxyApiKey(proxyApiKey); + aiProxyApiKeyRepository.save(entity); + + boolean exists = aiProxyApiKeyRepository.existsBySelectorIdAndProxyApiKey(selectorId, proxyApiKey); + Assertions.assertTrue(exists); + + boolean notExists = aiProxyApiKeyRepository.existsBySelectorIdAndProxyApiKey(selectorId, "non-existent-key"); + Assertions.assertFalse(notExists); + } + + private ProxyApiKeyDO buildProxyApiKeyDO() { + ProxyApiKeyDO entity = new ProxyApiKeyDO(); + entity.setId(UUIDUtils.getInstance().generateShortUuid()); + entity.setProxyApiKey(UUIDUtils.getInstance().generateShortUuid()); + entity.setEnabled(true); + entity.setNamespaceId("default-namespace"); + entity.setSelectorId("default-selector"); + entity.setDescription("test description"); + entity.setDateCreated(Timestamp.valueOf(LocalDateTime.now())); + entity.setDateUpdated(Timestamp.valueOf(LocalDateTime.now())); + return entity; + } +} \ No newline at end of file diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/AlertReceiverRepositoryTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/AlertReceiverRepositoryTest.java new file mode 100644 index 000000000000..d2ffea6a6c07 --- /dev/null +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/AlertReceiverRepositoryTest.java @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import jakarta.annotation.Resource; +import org.apache.shenyu.admin.AbstractSpringIntegrationTest; +import org.apache.shenyu.admin.model.entity.AlertReceiverDO; +import org.apache.shenyu.admin.model.page.PageParameter; +import org.apache.shenyu.admin.model.page.PageResultUtils; +import org.apache.shenyu.admin.model.query.AlertReceiverQuery; +import org.apache.shenyu.common.utils.UUIDUtils; +import org.junit.jupiter.api.Test; +import org.springframework.data.domain.Page; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class AlertReceiverRepositoryTest extends AbstractSpringIntegrationTest { + + @Resource + private AlertReceiverRepository alertReceiverRepository; + + @Test + void pageByDynamicConditions() { + int namespaceACount = 6; + for (int i = 0; i < namespaceACount; i++) { + alertReceiverRepository.save(buildAlertReceiverDO("namespaceA")); + } + alertReceiverRepository.save(buildAlertReceiverDO("namespaceB")); + + int pageSize = 5; + AlertReceiverQuery query = new AlertReceiverQuery(); + query.setNamespaceId("namespaceA"); + query.setPageParameter(new PageParameter(1, pageSize)); + Page firstPage = alertReceiverRepository.pageByDynamicConditions(query, PageResultUtils.of(query.getPageParameter())); + assertEquals(namespaceACount, firstPage.getTotalElements()); + assertEquals(pageSize, firstPage.getContent().size()); + + query.setPageParameter(new PageParameter(2, pageSize)); + Page secondPage = alertReceiverRepository.pageByDynamicConditions(query, PageResultUtils.of(query.getPageParameter())); + assertEquals(namespaceACount, secondPage.getTotalElements()); + assertEquals(namespaceACount - pageSize, secondPage.getContent().size()); + } + + private AlertReceiverDO buildAlertReceiverDO(final String namespaceId) { + AlertReceiverDO alertReceiverDO = new AlertReceiverDO(); + alertReceiverDO.setId(UUIDUtils.getInstance().generateShortUuid()); + alertReceiverDO.setNamespaceId(namespaceId); + alertReceiverDO.setName("Default Receiver"); + alertReceiverDO.setEnable(true); + alertReceiverDO.setType((byte) 1); + alertReceiverDO.setPhone("1234567890"); + alertReceiverDO.setEmail("default@example.com"); + alertReceiverDO.setWechatId("wechat123"); + alertReceiverDO.setHookUrl("https://webhook.example.com"); + alertReceiverDO.setCorpId("corp123"); + alertReceiverDO.setAgentId("agent123"); + alertReceiverDO.setAppSecret("secret123"); + alertReceiverDO.setAccessToken("access123"); + alertReceiverDO.setTgBotToken("tg_bot_token"); + alertReceiverDO.setTgUserId("tg_user_id"); + alertReceiverDO.setSlackWebHookUrl("https://slack.webhook.url"); + alertReceiverDO.setDiscordChannelId("discord_channel"); + alertReceiverDO.setDiscordBotToken("discord_bot_token"); + alertReceiverDO.setSmnAk("smn_ak"); + alertReceiverDO.setSmnSk("smn_sk"); + alertReceiverDO.setSmnProjectId("smn_project_id"); + alertReceiverDO.setSmnRegion("smn_region"); + alertReceiverDO.setSmnTopicUrn("smn_topic_urn"); + alertReceiverDO.setMatchAll(true); + Map labels = new HashMap<>(); + labels.put("environment", "test"); + labels.put("service", "shenyu"); + alertReceiverDO.setLabels(labels); + List levels = Arrays.asList((byte) 0, (byte) 1, (byte) 2); + alertReceiverDO.setLevels(levels); + return alertReceiverDO; + } +} \ No newline at end of file diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRepositoryTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRepositoryTest.java new file mode 100644 index 000000000000..32f706cbd259 --- /dev/null +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/jpa/repository/DiscoveryRepositoryTest.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shenyu.admin.jpa.repository; + +import com.alibaba.nacos.api.common.Constants; +import jakarta.annotation.Resource; +import org.apache.shenyu.admin.AbstractSpringIntegrationTest; +import org.apache.shenyu.admin.model.entity.DiscoveryDO; +import org.apache.shenyu.common.utils.UUIDUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.transaction.annotation.Transactional; + +import java.sql.Timestamp; +import java.time.LocalDateTime; + +class DiscoveryRepositoryTest extends AbstractSpringIntegrationTest { + + @Resource + private DiscoveryRepository discoveryRepository; + + private final DiscoveryDO discoveryDO = buildDefaultNamespaceDiscoveryDO(UUIDUtils.getInstance().generateShortUuid()); + + @Test + @Transactional + void updateSelective() { + discoveryRepository.save(discoveryDO); + DiscoveryDO update = new DiscoveryDO(); + update.setId(discoveryDO.getId()); + update.setDiscoveryLevel("level1"); + int updateCount = discoveryRepository.updateSelective(update); + Assertions.assertEquals(1, updateCount); + } + + private DiscoveryDO buildDefaultNamespaceDiscoveryDO(final String id) { + DiscoveryDO discoveryDO = new DiscoveryDO(); + discoveryDO.setId(id); + discoveryDO.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID); + discoveryDO.setDiscoveryName("name"); + discoveryDO.setDiscoveryType("type"); + discoveryDO.setDiscoveryLevel("level"); + discoveryDO.setServerList("serverList"); + discoveryDO.setPluginName("pluginName"); + discoveryDO.setProps("props"); + discoveryDO.setDateCreated(Timestamp.valueOf(LocalDateTime.now())); + discoveryDO.setDateUpdated(Timestamp.valueOf(LocalDateTime.now())); + return discoveryDO; + } +} \ No newline at end of file diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AlertDispatchServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AlertDispatchServiceTest.java index 08db1d3b8eb5..bbafa7be5387 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AlertDispatchServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AlertDispatchServiceTest.java @@ -17,8 +17,10 @@ package org.apache.shenyu.admin.service; -import org.apache.shenyu.admin.mapper.AlertReceiverMapper; +import org.apache.shenyu.admin.jpa.repository.AlertReceiverRepository; +import org.apache.shenyu.admin.model.entity.AlertReceiverDO; import org.apache.shenyu.admin.service.impl.AlertDispatchServiceImpl; +import org.apache.shenyu.admin.transfer.AlertTransfer; import org.apache.shenyu.alert.AlertNotifyHandler; import org.apache.shenyu.alert.exception.AlertNoticeException; import org.apache.shenyu.alert.model.AlertReceiverDTO; @@ -93,7 +95,7 @@ public class AlertDispatchServiceTest { private AlertNotifyHandler wechatHandler; @Mock - private AlertReceiverMapper alertReceiverMapper; + private AlertReceiverRepository alertReceiverRepository; @BeforeEach void setUp() { @@ -103,7 +105,7 @@ void setUp() { List handlers = Arrays.asList(emailHandler, webhookHandler, wechatHandler); - alertDispatchService = new AlertDispatchServiceImpl(handlers, alertReceiverMapper); + alertDispatchService = new AlertDispatchServiceImpl(handlers, alertReceiverRepository); } @AfterEach @@ -128,9 +130,9 @@ void testConstructorInitializesCorrectly() { @Test void testDispatchAlertSuccess() throws InterruptedException { - final AlertReceiverDTO receiver = createTestReceiver(EMAIL_TYPE, true, false); + final AlertReceiverDO receiver = createTestReceiver(EMAIL_TYPE, true, false); - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(receiver)); + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(receiver)); final CountDownLatch latch = new CountDownLatch(1); final AlarmContent alarmContent = createTestAlarmContent(); @@ -147,8 +149,8 @@ void testDispatchAlertSuccess() throws InterruptedException { assertTrue(latch.await(5, TimeUnit.SECONDS), "Alert dispatch should complete within 5 seconds"); // Verify handler was called - Mockito.verify(emailHandler, times(1)).send(eq(receiver), eq(alarmContent)); - verify(alertReceiverMapper, times(1)).selectAll(); + Mockito.verify(emailHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(receiver)), eq(alarmContent)); + verify(alertReceiverRepository, times(1)).findAll(); } @Test @@ -164,15 +166,15 @@ void testDispatchAlertWithNullContent() throws InterruptedException { verify(emailHandler, never()).send(any(), any()); verify(webhookHandler, never()).send(any(), any()); verify(wechatHandler, never()).send(any(), any()); - verify(alertReceiverMapper, never()).selectAll(); + verify(alertReceiverRepository, never()).findAll(); } @Test void testDispatchAlertWithMultipleReceivers() throws InterruptedException { - final AlertReceiverDTO emailReceiver = createTestReceiver(EMAIL_TYPE, true, false); - final AlertReceiverDTO webhookReceiver = createTestReceiver(WEBHOOK_TYPE, true, false); - - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(emailReceiver, webhookReceiver)); + final AlertReceiverDO emailReceiver = createTestReceiver(EMAIL_TYPE, true, false); + final AlertReceiverDO webhookReceiver = createTestReceiver(WEBHOOK_TYPE, true, false); + + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(emailReceiver, webhookReceiver)); final CountDownLatch latch = new CountDownLatch(2); final AlarmContent alarmContent = createTestAlarmContent(); @@ -193,15 +195,15 @@ void testDispatchAlertWithMultipleReceivers() throws InterruptedException { assertTrue(latch.await(5, TimeUnit.SECONDS), "Alert dispatch should complete within 5 seconds"); // Verify both handlers were called - verify(emailHandler, times(1)).send(eq(emailReceiver), eq(alarmContent)); - verify(webhookHandler, times(1)).send(eq(webhookReceiver), eq(alarmContent)); + verify(emailHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(emailReceiver)), eq(alarmContent)); + verify(webhookHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(webhookReceiver)), eq(alarmContent)); } @Test void testDispatchAlertWithHandlerException() throws InterruptedException { - final AlertReceiverDTO receiver = createTestReceiver(EMAIL_TYPE, true, false); - - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(receiver)); + final AlertReceiverDO receiver = createTestReceiver(EMAIL_TYPE, true, false); + + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(receiver)); final CountDownLatch latch = new CountDownLatch(1); final AlarmContent alarmContent = createTestAlarmContent(); @@ -215,13 +217,13 @@ void testDispatchAlertWithHandlerException() throws InterruptedException { assertTrue(latch.await(5, TimeUnit.SECONDS), "Alert dispatch should complete within 5 seconds"); - verify(emailHandler, times(1)).send(eq(receiver), eq(alarmContent)); + verify(emailHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(receiver)), eq(alarmContent)); } @Test void testClearCache() throws Exception { - final AlertReceiverDTO receiver = createTestReceiver(EMAIL_TYPE, true, false); - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(receiver)); + final AlertReceiverDO receiver = createTestReceiver(EMAIL_TYPE, true, false); + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(receiver)); final CountDownLatch latch = new CountDownLatch(1); final AlarmContent alarmContent = createTestAlarmContent(); @@ -244,13 +246,13 @@ void testClearCache() throws Exception { @Test void testSendNoticeMsgSuccess() { - final AlertReceiverDTO receiver = createTestReceiver(EMAIL_TYPE, true, false); + final AlertReceiverDO receiver = createTestReceiver(EMAIL_TYPE, true, false); final AlarmContent alarmContent = createTestAlarmContent(); - final boolean result = alertDispatchService.sendNoticeMsg(receiver, alarmContent); + final boolean result = alertDispatchService.sendNoticeMsg(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(receiver), alarmContent); assertTrue(result); - verify(emailHandler, times(1)).send(eq(receiver), eq(alarmContent)); + verify(emailHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(receiver)), eq(alarmContent)); } @Test @@ -266,10 +268,10 @@ void testSendNoticeMsgWithNullReceiver() { @Test void testSendNoticeMsgWithNullReceiverType() { - final AlertReceiverDTO receiver = createTestReceiver(null, true, false); + final AlertReceiverDO receiver = createTestReceiver(null, true, false); final AlarmContent alarmContent = createTestAlarmContent(); - final boolean result = alertDispatchService.sendNoticeMsg(receiver, alarmContent); + final boolean result = alertDispatchService.sendNoticeMsg(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(receiver), alarmContent); assertFalse(result); verify(emailHandler, never()).send(any(), any()); @@ -277,10 +279,10 @@ void testSendNoticeMsgWithNullReceiverType() { @Test void testSendNoticeMsgWithUnknownType() { - final AlertReceiverDTO receiver = createTestReceiver(UNKNOWN_TYPE, true, false); + final AlertReceiverDO receiver = createTestReceiver(UNKNOWN_TYPE, true, false); final AlarmContent alarmContent = createTestAlarmContent(); - final boolean result = alertDispatchService.sendNoticeMsg(receiver, alarmContent); + final boolean result = alertDispatchService.sendNoticeMsg(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(receiver), alarmContent); assertFalse(result); verify(emailHandler, never()).send(any(), any()); @@ -291,9 +293,9 @@ void testSendNoticeMsgWithUnknownType() { @Test void testReceiverMatchingWithMatchAll() throws InterruptedException { final AlarmContent alarmContent = createTestAlarmContent(); - final AlertReceiverDTO matchAllReceiver = createTestReceiver(EMAIL_TYPE, true, true); - - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(matchAllReceiver)); + final AlertReceiverDO matchAllReceiver = createTestReceiver(EMAIL_TYPE, true, true); + + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(matchAllReceiver)); final CountDownLatch latch = new CountDownLatch(1); doAnswer(invocation -> { @@ -304,15 +306,15 @@ void testReceiverMatchingWithMatchAll() throws InterruptedException { alertDispatchService.dispatchAlert(alarmContent); assertTrue(latch.await(5, TimeUnit.SECONDS)); - verify(emailHandler, times(1)).send(eq(matchAllReceiver), eq(alarmContent)); + verify(emailHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(matchAllReceiver)), eq(alarmContent)); } @Test void testReceiverMatchingWithDisabledReceiver() throws InterruptedException { final AlarmContent alarmContent = createTestAlarmContent(); - final AlertReceiverDTO disabledReceiver = createTestReceiver(EMAIL_TYPE, false, false); + final AlertReceiverDO disabledReceiver = createTestReceiver(EMAIL_TYPE, false, false); - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(disabledReceiver)); + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(disabledReceiver)); alertDispatchService.dispatchAlert(alarmContent); @@ -326,13 +328,13 @@ void testReceiverMatchingWithNamespaceId() throws InterruptedException { final AlarmContent alarmContent = createTestAlarmContent(); alarmContent.setNamespaceId(TEST_NAMESPACE_ID); - final AlertReceiverDTO matchingReceiver = createTestReceiver(EMAIL_TYPE, true, false); + final AlertReceiverDO matchingReceiver = createTestReceiver(EMAIL_TYPE, true, false); matchingReceiver.setNamespaceId(TEST_NAMESPACE_ID); - final AlertReceiverDTO nonMatchingReceiver = createTestReceiver(WEBHOOK_TYPE, true, false); + final AlertReceiverDO nonMatchingReceiver = createTestReceiver(WEBHOOK_TYPE, true, false); nonMatchingReceiver.setNamespaceId("different-namespace"); - - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(matchingReceiver, nonMatchingReceiver)); + + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(matchingReceiver, nonMatchingReceiver)); final CountDownLatch latch = new CountDownLatch(1); doAnswer(invocation -> { @@ -343,7 +345,7 @@ void testReceiverMatchingWithNamespaceId() throws InterruptedException { alertDispatchService.dispatchAlert(alarmContent); assertTrue(latch.await(5, TimeUnit.SECONDS)); - verify(emailHandler, times(1)).send(eq(matchingReceiver), eq(alarmContent)); + verify(emailHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(matchingReceiver)), eq(alarmContent)); verify(webhookHandler, never()).send(any(), any()); } @@ -353,13 +355,13 @@ void testReceiverMatchingWithLevels() throws InterruptedException { final AlarmContent alarmContent = createTestAlarmContent(); alarmContent.setLevel(alertLevel); - final AlertReceiverDTO matchingReceiver = createTestReceiver(EMAIL_TYPE, true, false); + final AlertReceiverDO matchingReceiver = createTestReceiver(EMAIL_TYPE, true, false); matchingReceiver.setLevels(Arrays.asList((byte) 0, (byte) 1, (byte) 2)); - final AlertReceiverDTO nonMatchingReceiver = createTestReceiver(WEBHOOK_TYPE, true, false); + final AlertReceiverDO nonMatchingReceiver = createTestReceiver(WEBHOOK_TYPE, true, false); nonMatchingReceiver.setLevels(Arrays.asList((byte) 0, (byte) 2)); - - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(matchingReceiver, nonMatchingReceiver)); + + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(matchingReceiver, nonMatchingReceiver)); final CountDownLatch latch = new CountDownLatch(1); doAnswer(invocation -> { @@ -370,7 +372,7 @@ void testReceiverMatchingWithLevels() throws InterruptedException { alertDispatchService.dispatchAlert(alarmContent); assertTrue(latch.await(5, TimeUnit.SECONDS)); - verify(emailHandler, times(1)).send(eq(matchingReceiver), eq(alarmContent)); + verify(emailHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(matchingReceiver)), eq(alarmContent)); verify(webhookHandler, never()).send(any(), any()); } @@ -383,17 +385,17 @@ void testReceiverMatchingWithLabels() throws InterruptedException { final AlarmContent alarmContent = createTestAlarmContent(); alarmContent.setLabels(alertLabels); - final AlertReceiverDTO matchingReceiver = createTestReceiver(EMAIL_TYPE, true, false); + final AlertReceiverDO matchingReceiver = createTestReceiver(EMAIL_TYPE, true, false); final Map matchingLabels = new HashMap<>(); matchingLabels.put("service", "gateway"); matchingReceiver.setLabels(matchingLabels); - final AlertReceiverDTO nonMatchingReceiver = createTestReceiver(WEBHOOK_TYPE, true, false); + final AlertReceiverDO nonMatchingReceiver = createTestReceiver(WEBHOOK_TYPE, true, false); final Map nonMatchingLabels = new HashMap<>(); nonMatchingLabels.put("service", "api"); nonMatchingReceiver.setLabels(nonMatchingLabels); - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(matchingReceiver, nonMatchingReceiver)); + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(matchingReceiver, nonMatchingReceiver)); final CountDownLatch latch = new CountDownLatch(1); doAnswer(invocation -> { @@ -404,7 +406,7 @@ void testReceiverMatchingWithLabels() throws InterruptedException { alertDispatchService.dispatchAlert(alarmContent); assertTrue(latch.await(5, TimeUnit.SECONDS)); - verify(emailHandler, times(1)).send(eq(matchingReceiver), eq(alarmContent)); + verify(emailHandler, times(1)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(matchingReceiver)), eq(alarmContent)); verify(webhookHandler, never()).send(any(), any()); } @@ -413,12 +415,12 @@ void testReceiverMatchingWithMissingAlertLabels() throws InterruptedException { final AlarmContent alarmContent = createTestAlarmContent(); alarmContent.setLabels(null); - final AlertReceiverDTO receiverWithLabels = createTestReceiver(EMAIL_TYPE, true, false); + final AlertReceiverDO receiverWithLabels = createTestReceiver(EMAIL_TYPE, true, false); final Map requiredLabels = new HashMap<>(); requiredLabels.put("service", "gateway"); receiverWithLabels.setLabels(requiredLabels); - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(receiverWithLabels)); + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(receiverWithLabels)); alertDispatchService.dispatchAlert(alarmContent); @@ -431,9 +433,9 @@ void testReceiverMatchingWithMissingAlertLabels() throws InterruptedException { @Test void testReceiverCacheUsage() throws InterruptedException { final AlarmContent alarmContent = createTestAlarmContent(); - final AlertReceiverDTO receiver = createTestReceiver(EMAIL_TYPE, true, false); - - when(alertReceiverMapper.selectAll()).thenReturn(Arrays.asList(receiver)); + final AlertReceiverDO receiver = createTestReceiver(EMAIL_TYPE, true, false); + + when(alertReceiverRepository.findAll()).thenReturn(Arrays.asList(receiver)); final CountDownLatch latch1 = new CountDownLatch(1); final CountDownLatch latch2 = new CountDownLatch(1); @@ -455,8 +457,8 @@ void testReceiverCacheUsage() throws InterruptedException { assertTrue(latch2.await(5, TimeUnit.SECONDS)); // verify mapper is called only once (cache is used for second call) - verify(alertReceiverMapper, times(1)).selectAll(); - verify(emailHandler, times(2)).send(eq(receiver), eq(alarmContent)); + verify(alertReceiverRepository, times(1)).findAll(); + verify(emailHandler, times(2)).send(eq(AlertTransfer.INSTANCE.mapToAlertReceiverDTO(receiver)), eq(alarmContent)); } @Test @@ -489,8 +491,8 @@ private AlarmContent createTestAlarmContent() { .build(); } - private AlertReceiverDTO createTestReceiver(final Byte type, final boolean enabled, final boolean matchAll) { - AlertReceiverDTO receiver = new AlertReceiverDTO(); + private AlertReceiverDO createTestReceiver(final Byte type, final boolean enabled, final boolean matchAll) { + AlertReceiverDO receiver = new AlertReceiverDO(); receiver.setId(TEST_RECEIVER_ID); receiver.setName("Test Receiver"); receiver.setType(type); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AlertReceiverServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AlertReceiverServiceTest.java index a91eebd645a2..36e90cd0dcc9 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AlertReceiverServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AlertReceiverServiceTest.java @@ -18,10 +18,11 @@ package org.apache.shenyu.admin.service; import com.google.common.collect.Lists; -import org.apache.shenyu.admin.mapper.AlertReceiverMapper; +import org.apache.shenyu.admin.jpa.repository.AlertReceiverRepository; import org.apache.shenyu.admin.model.entity.AlertReceiverDO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; +import org.apache.shenyu.admin.model.page.PageResultUtils; import org.apache.shenyu.admin.model.query.AlertReceiverQuery; import org.apache.shenyu.admin.service.impl.AlertReceiverServiceImpl; import org.apache.shenyu.admin.transfer.AlertTransfer; @@ -34,10 +35,12 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; +import org.springframework.data.domain.PageImpl; import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -60,39 +63,36 @@ public final class AlertReceiverServiceTest { private AlertReceiverServiceImpl alertReceiverService; @Mock - private AlertReceiverMapper alertReceiverMapper; + private AlertReceiverRepository alertReceiverRepository; @Mock private AlertDispatchService alertDispatchService; @BeforeEach public void setUp() { - alertReceiverService = new AlertReceiverServiceImpl(alertReceiverMapper, alertDispatchService); + alertReceiverService = new AlertReceiverServiceImpl(alertDispatchService, alertReceiverRepository); } @Test public void testAddReceiver() { - given(alertReceiverMapper.insert(any())).willReturn(1); alertReceiverService.addReceiver(new AlertReceiverDTO()); } @Test public void testDeleteReceiver() { - given(alertReceiverMapper.deleteByIds(any())).willReturn(1); alertReceiverService.deleteReceiver(Lists.newArrayList("1")); } @Test public void testUpdateReceiver() { - given(alertReceiverMapper.updateByPrimaryKey(any())).willReturn(1); alertReceiverService.updateReceiver(new AlertReceiverDTO()); } @Test public void testGetAll() { - AlertReceiverDTO alertReceiverDTO = buildAlertReceiverDTO("123"); - List list = Lists.newArrayList(alertReceiverDTO); - given(alertReceiverMapper.selectAll()).willReturn(list); + AlertReceiverDO alertReceiverDTO = buildAlertReceiverDO("123"); + List list = Lists.newArrayList(alertReceiverDTO); + given(alertReceiverRepository.findAll()).willReturn(list); List all = alertReceiverService.getAll(); assertNotNull(all); assertEquals(all.size(), list.size()); @@ -107,7 +107,8 @@ public void testListByPage() { AlertReceiverQuery alertReceiverQuery = new AlertReceiverQuery(pageParameter); alertReceiverQuery.setNamespaceId(SYS_DEFAULT_NAMESPACE_ID); List receiverDOList = IntStream.range(0, 10).mapToObj(i -> buildAlertReceiverDO(String.valueOf(i))).collect(Collectors.toList()); - given(this.alertReceiverMapper.selectByQuery(alertReceiverQuery)).willReturn(receiverDOList); + PageImpl page = new PageImpl<>(receiverDOList, PageResultUtils.of(pageParameter), receiverDOList.size()); + given(this.alertReceiverRepository.pageByDynamicConditions(alertReceiverQuery, PageResultUtils.of(pageParameter))).willReturn(page); final CommonPager commonPager = this.alertReceiverService.listByPage(alertReceiverQuery); assertEquals(commonPager.getDataList().size(), receiverDOList.size()); } @@ -115,7 +116,7 @@ public void testListByPage() { @Test public void testDetail() { AlertReceiverDO receiverDO = buildAlertReceiverDO("123"); - given(this.alertReceiverMapper.selectByPrimaryKey(anyString())).willReturn(receiverDO); + given(this.alertReceiverRepository.findById(anyString())).willReturn(Optional.of(receiverDO)); AlertReceiverDTO receiverDTO = alertReceiverService.detail("123"); assertNotNull(receiverDTO); assertEquals(receiverDTO.getId(), receiverDO.getId()); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ApiServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ApiServiceTest.java index dd7b719e769b..bda63c6c2b20 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ApiServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ApiServiceTest.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.ApiRepository; import org.apache.shenyu.admin.mapper.ApiMapper; import org.apache.shenyu.admin.mapper.TagMapper; import org.apache.shenyu.admin.mapper.TagRelationMapper; @@ -42,6 +43,7 @@ import java.time.LocalDateTime; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -73,6 +75,9 @@ public final class ApiServiceTest { @Mock private ApiMapper apiMapper; + @Mock + private ApiRepository apiRepository; + @Mock private TagRelationMapper tagRelationMapper; @@ -82,7 +87,7 @@ public final class ApiServiceTest { @BeforeEach public void setUp() { apiService = new ApiServiceImpl(selectorService, ruleService, - metaDataService, apiMapper, tagRelationMapper, tagMapper); + metaDataService, apiMapper, apiRepository, tagRelationMapper, tagMapper); } @Test @@ -103,7 +108,7 @@ public void testDelete() { public void testFindById() { String id = "123"; final ApiDO apiDO = buildApiDO(id); - given(this.apiMapper.selectByPrimaryKey(eq(id))).willReturn(apiDO); + given(this.apiRepository.findById(eq(id))).willReturn(Optional.of(apiDO)); ApiVO byId = this.apiService.findById(id); assertNotNull(byId); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AppAuthServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AppAuthServiceTest.java index 4db636a453d0..caff15d49f3f 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AppAuthServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/AppAuthServiceTest.java @@ -19,6 +19,9 @@ import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.AppAuthRepository; +import org.apache.shenyu.admin.jpa.repository.AuthParamRepository; +import org.apache.shenyu.admin.jpa.repository.AuthPathRepository; import org.apache.shenyu.admin.mapper.AppAuthMapper; import org.apache.shenyu.admin.mapper.AuthParamMapper; import org.apache.shenyu.admin.mapper.AuthPathMapper; @@ -52,12 +55,14 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.context.ApplicationEventPublisher; +import org.springframework.data.domain.PageImpl; import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThan; @@ -81,6 +86,9 @@ public final class AppAuthServiceTest { @InjectMocks private AppAuthServiceImpl appAuthService; + @Mock + private AppAuthRepository appAuthRepository; + @Mock private AppAuthMapper appAuthMapper; @@ -90,9 +98,15 @@ public final class AppAuthServiceTest { @Mock private AuthParamMapper authParamMapper; + @Mock + private AuthParamRepository authParamRepository; + @Mock private AuthPathMapper authPathMapper; + @Mock + private AuthPathRepository authPathRepository; + private final AppAuthDO appAuthDO = buildAppAuthDO(); @Test @@ -155,7 +169,7 @@ public void testOpened() { batchCommonDTO.setIds(Collections.singletonList(appAuthDO.getId())); assertEquals(AdminConstants.ID_NOT_EXIST, this.appAuthService.opened(batchCommonDTO.getIds(), batchCommonDTO.getEnabled())); - given(this.appAuthMapper.selectById(appAuthDO.getId())).willReturn(appAuthDO); + given(this.appAuthRepository.findById(appAuthDO.getId())).willReturn(Optional.of(appAuthDO)); given(this.appAuthMapper.selectByIds(Collections.singletonList(appAuthDO.getId()))).willReturn(Collections.singletonList(appAuthDO)); assertEquals(StringUtils.EMPTY, this.appAuthService.opened(batchCommonDTO.getIds(), batchCommonDTO.getEnabled())); AppAuthVO appAuthVO = this.appAuthService.findById(appAuthDO.getId()); @@ -169,7 +183,7 @@ public void testEnabled() { batchCommonDTO.setIds(Collections.singletonList(appAuthDO.getId())); assertEquals(AdminConstants.ID_NOT_EXIST, this.appAuthService.enabled(batchCommonDTO.getIds(), batchCommonDTO.getEnabled())); - given(this.appAuthMapper.selectById(appAuthDO.getId())).willReturn(appAuthDO); + given(this.appAuthRepository.findById(appAuthDO.getId())).willReturn(Optional.of(appAuthDO)); given(this.appAuthMapper.selectByIds(Collections.singletonList(appAuthDO.getId()))).willReturn(Collections.singletonList(appAuthDO)); assertEquals(StringUtils.EMPTY, this.appAuthService.enabled(batchCommonDTO.getIds(), batchCommonDTO.getEnabled())); AppAuthVO appAuthVO = this.appAuthService.findById(appAuthDO.getId()); @@ -183,8 +197,8 @@ public void testFindById() { String appParam = "{\"type\": \"test\"}"; AuthParamDO authParamDO = AuthParamDO.create(authId, appName, appParam); List authParamDOList = Collections.singletonList(authParamDO); - given(this.authParamMapper.findByAuthId(eq(appAuthDO.getId()))).willReturn(authParamDOList); - given(this.appAuthMapper.selectById(eq(appAuthDO.getId()))).willReturn(appAuthDO); + given(this.authParamRepository.findByAuthId(eq(appAuthDO.getId()))).willReturn(authParamDOList); + given(this.appAuthRepository.findById(eq(appAuthDO.getId()))).willReturn(Optional.of(appAuthDO)); AppAuthVO appAuthVO = this.appAuthService.findById(appAuthDO.getId()); assertNotNull(appAuthVO); assertEquals(appAuthDO.getId(), appAuthVO.getId()); @@ -200,7 +214,7 @@ public void testDetailPath() { assertEquals(0, authPathVOListEmpty.size()); authPathDO.setId(authPathDoId); authPathDO.setAuthId(authPathDOAuthId); - given(this.authPathMapper.findByAuthId(eq(authPathDOAuthId))).willReturn(Collections.singletonList(authPathDO)); + given(this.authPathRepository.findByAuthId(eq(authPathDOAuthId))).willReturn(Collections.singletonList(authPathDO)); List authPathVOList = this.appAuthService.detailPath(authPathDOAuthId); assertEquals(1, authPathVOList.size()); assertEquals(authPathDoId, authPathVOList.get(0).getId()); @@ -208,8 +222,8 @@ public void testDetailPath() { @Test public void testListByPage() { - given(this.appAuthMapper.countByQuery(any())).willReturn(1); - given(this.appAuthMapper.selectByQuery(any())).willReturn(Collections.singletonList(appAuthDO)); + PageImpl page = new PageImpl<>(Collections.singletonList(appAuthDO)); + given(this.appAuthRepository.selectByQuery(any(), any())).willReturn(page); AppAuthQuery appAuthQuery = new AppAuthQuery(); appAuthQuery.setPageParameter(new PageParameter()); CommonPager appAuthVOCommonPager = this.appAuthService.listByPage(appAuthQuery); @@ -220,14 +234,14 @@ public void testListByPage() { public void testUpdateAppSecretByAppKey() { String newAppSecret = SignUtils.generateKey(); appAuthDO.setAppSecret(newAppSecret); - given(this.appAuthMapper.updateAppSecretByAppKey(appAuthDO.getAppKey(), appAuthDO.getAppSecret())).willReturn(1); + given(this.appAuthRepository.updateAppSecretByAppKey(appAuthDO.getAppKey(), appAuthDO.getAppSecret())).willReturn(1); ShenyuAdminResult result = this.appAuthService.updateAppSecretByAppKey(appAuthDO.getAppKey(), appAuthDO.getAppSecret()); assertThat((int) result.getData(), greaterThan(0)); } @Test public void testListAll() { - given(this.appAuthMapper.selectAll()).willReturn(Collections.singletonList(appAuthDO)); + given(this.appAuthRepository.findAll()).willReturn(Collections.singletonList(appAuthDO)); List appAuthDataList = this.appAuthService.listAll(); assertEquals(1, appAuthDataList.size()); assertEquals(appAuthDO.getAppKey(), appAuthDataList.get(0).getAppKey()); @@ -235,7 +249,7 @@ public void testListAll() { @Test public void testListAllData() { - given(this.appAuthMapper.selectAll()).willReturn(Collections.singletonList(appAuthDO)); + given(this.appAuthRepository.findAll()).willReturn(Collections.singletonList(appAuthDO)); List appAuthDataList = this.appAuthService.listAllData(); assertEquals(1, appAuthDataList.size()); assertEquals(appAuthDO.getAppKey(), appAuthDataList.get(0).getAppKey()); @@ -261,7 +275,7 @@ public void testSyncData() { AppAuthDO authDO = new AppAuthDO(); authDO.setNamespaceId("test"); ArrayList all = Lists.newArrayList(authDO); - when(appAuthMapper.selectAll()) + when(appAuthRepository.findAll()) .thenReturn(null) .thenReturn(Lists.newArrayList()) .thenReturn(all); @@ -295,7 +309,6 @@ private void testApplyCreateMissingPathsWhenOpen() { private void testApplyCreateSuccess() { AuthApplyDTO newAuthApplyDTO = buildAuthApplyDTO(); - given(this.appAuthMapper.insert(any())).willReturn(1); given(this.authParamMapper.save(any())).willReturn(1); ShenyuAdminResult successResult = this.appAuthService.applyCreate(newAuthApplyDTO); assertEquals(ShenyuResultMessage.CREATE_SUCCESS, successResult.getMessage()); @@ -341,8 +354,8 @@ private void testApplyUpdateSuccess() { given(this.authPathMapper.findByAuthIdAndAppName( eq(appAuthDO.getId()), eq(authApplyDTO.getAppName()))).willReturn(Collections.singletonList(authPathDO)); given(this.appAuthMapper.findByAppKey(appAuthDO.getAppKey())).willReturn(appAuthDO); - given(authPathMapper.findByAuthId(eq(appAuthDO.getId()))).willReturn(Collections.singletonList(authPathDO)); - given(authParamMapper.findByAuthId(eq(appAuthDO.getId()))).willReturn(authParamDOList); + given(authPathRepository.findByAuthId(eq(appAuthDO.getId()))).willReturn(Collections.singletonList(authPathDO)); + given(authParamRepository.findByAuthId(eq(appAuthDO.getId()))).willReturn(authParamDOList); ShenyuAdminResult successResult = this.appAuthService.applyUpdate(buildAuthApplyDTO()); assertEquals(ShenyuResultMessage.UPDATE_SUCCESS, successResult.getMessage()); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DashboardUserServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DashboardUserServiceTest.java index d1ca7ed01bf7..e6492b571e59 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DashboardUserServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DashboardUserServiceTest.java @@ -20,6 +20,9 @@ import org.apache.shenyu.admin.config.properties.JwtProperties; import org.apache.shenyu.admin.config.properties.LdapProperties; import org.apache.shenyu.admin.config.properties.SecretProperties; +import org.apache.shenyu.admin.jpa.repository.DashboardUserRepository; +import org.apache.shenyu.admin.jpa.repository.RoleRepository; +import org.apache.shenyu.admin.jpa.repository.UserRoleRepository; import org.apache.shenyu.admin.mapper.DashboardUserMapper; import org.apache.shenyu.admin.mapper.RoleMapper; import org.apache.shenyu.admin.mapper.UserRoleMapper; @@ -30,6 +33,7 @@ import org.apache.shenyu.admin.model.entity.RoleDO; import org.apache.shenyu.admin.model.page.CommonPager; import org.apache.shenyu.admin.model.page.PageParameter; +import org.apache.shenyu.admin.model.page.PageResultUtils; import org.apache.shenyu.admin.model.query.DashboardUserQuery; import org.apache.shenyu.admin.model.vo.DashboardUserVO; import org.apache.shenyu.admin.model.vo.LoginDashboardUserVO; @@ -45,6 +49,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.data.domain.PageImpl; import org.springframework.ldap.core.LdapTemplate; import org.springframework.test.util.ReflectionTestUtils; @@ -52,6 +57,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -83,12 +89,21 @@ public final class DashboardUserServiceTest { @Mock private DashboardUserMapper dashboardUserMapper; + @Mock + private DashboardUserRepository dashboardUserRepository; + @Mock private UserRoleMapper userRoleMapper; + @Mock + private UserRoleRepository userRoleRepository; + @Mock private RoleMapper roleMapper; + @Mock + private RoleRepository roleRepository; + @Mock private UserEventPublisher publisher; @@ -145,35 +160,35 @@ private DashboardUserDO mockUserById(final String id) { @Test public void testFindById() { DashboardUserDO dashboardUserDO = createDashboardUserDO(); - given(dashboardUserMapper.selectById(eq(TEST_ID))).willReturn(dashboardUserDO); + given(dashboardUserRepository.findById(eq(TEST_ID))).willReturn(Optional.of(dashboardUserDO)); DashboardUserVO dashboardUserVO = dashboardUserService.findById(TEST_ID); assertEquals(TEST_ID, dashboardUserVO.getId()); - verify(dashboardUserMapper).selectById(eq(TEST_ID)); + verify(dashboardUserRepository).findById(eq(TEST_ID)); } @Test public void testFindByQuery() { DashboardUserDO dashboardUserDO = createDashboardUserDO(); - given(dashboardUserMapper.findByQuery(eq(TEST_USER_NAME), eq(TEST_PASSWORD))).willReturn(dashboardUserDO); + given(dashboardUserRepository.findByUserNameAndPassword(eq(TEST_USER_NAME), eq(TEST_PASSWORD))).willReturn(Optional.of(dashboardUserDO)); DashboardUserVO dashboardUserVO = dashboardUserService.findByQuery(TEST_USER_NAME, TEST_PASSWORD); assertEquals(TEST_ID, dashboardUserVO.getId()); assertEquals(TEST_USER_NAME, dashboardUserVO.getUserName()); assertEquals(TEST_PASSWORD, dashboardUserVO.getPassword()); - verify(dashboardUserMapper).findByQuery(eq(TEST_USER_NAME), eq(TEST_PASSWORD)); + verify(dashboardUserRepository).findByUserNameAndPassword(eq(TEST_USER_NAME), eq(TEST_PASSWORD)); } @Test public void testFindByUsername() { DashboardUserDO dashboardUserDO = createDashboardUserDO(); - given(dashboardUserMapper.selectByUserName(eq(TEST_USER_NAME))).willReturn(dashboardUserDO); + given(dashboardUserRepository.findByUserName(eq(TEST_USER_NAME))).willReturn(Optional.of(dashboardUserDO)); DashboardUserVO dashboardUserVO = dashboardUserService.findByUserName(TEST_USER_NAME); assertEquals(TEST_ID, dashboardUserVO.getId()); assertEquals(TEST_USER_NAME, dashboardUserVO.getUserName()); assertEquals(TEST_PASSWORD, dashboardUserVO.getPassword()); - verify(dashboardUserMapper).selectByUserName(eq(TEST_USER_NAME)); + verify(dashboardUserRepository).findByUserName(eq(TEST_USER_NAME)); } @Test @@ -183,16 +198,18 @@ public void testListByPage() { PageParameter pageParameter = new PageParameter(); dashboardUserQuery.setPageParameter(pageParameter); - given(dashboardUserMapper.countByQuery(eq(dashboardUserQuery))).willReturn(1); DashboardUserDO dashboardUserDO = createDashboardUserDO(); - given(dashboardUserMapper.selectByQuery(eq(dashboardUserQuery))).willReturn(Collections.singletonList(dashboardUserDO)); + + PageImpl page = new PageImpl<>(Collections.singletonList(dashboardUserDO), + PageResultUtils.of(pageParameter), 1); + given(dashboardUserRepository.findByQuery(eq(TEST_USER_NAME), eq(PageResultUtils.of(pageParameter)))) + .willReturn(page); CommonPager commonPager = dashboardUserService.listByPage(dashboardUserQuery); assertThat(commonPager.getDataList()).isNotNull().isNotEmpty(); assertEquals(1, commonPager.getDataList().size()); assertEquals(TEST_ID, commonPager.getDataList().get(0).getId()); - verify(dashboardUserMapper).countByQuery(eq(dashboardUserQuery)); - verify(dashboardUserMapper).selectByQuery(eq(dashboardUserQuery)); + verify(dashboardUserRepository).findByQuery(eq(TEST_USER_NAME), eq(PageResultUtils.of(pageParameter))); } @Test @@ -201,9 +218,9 @@ public void testLogin() { ReflectionTestUtils.setField(dashboardUserService, "secretProperties", secretProperties); DashboardUserDO dashboardUserDO = createDashboardUserDO(); - when(dashboardUserMapper.findByQuery(eq(TEST_USER_NAME), anyString())).thenReturn(dashboardUserDO); + when(dashboardUserRepository.findByUserNameAndPassword(eq(TEST_USER_NAME), anyString())).thenReturn(Optional.of(dashboardUserDO)); given(ldapTemplate.authenticate(anyString(), anyString(), anyString())).willReturn(true); - given(roleMapper.findByRoleName("default")).willReturn(RoleDO.buildRoleDO(new RoleDTO("1", "test", null, null))); + given(roleRepository.findByRoleName("default")).willReturn(Optional.of(RoleDO.buildRoleDO(new RoleDTO("1", "test", null, null)))); // test loginByLdap LdapProperties ldapProperties = new LdapProperties(); @@ -217,9 +234,9 @@ public void testLogin() { // test loginByDatabase ReflectionTestUtils.setField(dashboardUserService, "ldapTemplate", null); assertLoginSuccessful(dashboardUserDO, dashboardUserService.login(TEST_USER_NAME, TEST_PASSWORD, null)); - verify(dashboardUserMapper).findByQuery(eq(TEST_USER_NAME), anyString()); + verify(dashboardUserRepository).findByUserNameAndPassword(eq(TEST_USER_NAME), anyString()); assertLoginSuccessful(dashboardUserDO, dashboardUserService.login(TEST_USER_NAME, TEST_PASSWORD, null)); - verify(dashboardUserMapper, times(2)).findByQuery(eq(TEST_USER_NAME), anyString()); + verify(dashboardUserRepository, times(2)).findByUserNameAndPassword(eq(TEST_USER_NAME), anyString()); // test loginByDatabase AES password SecretProperties secretPropertiesTmp = new SecretProperties(); @@ -228,9 +245,9 @@ public void testLogin() { ReflectionTestUtils.setField(dashboardUserService, "secretProperties", secretPropertiesTmp); ReflectionTestUtils.setField(dashboardUserService, "ldapTemplate", null); assertLoginSuccessful(dashboardUserDO, dashboardUserService.login(TEST_USER_NAME, AesUtils.cbcEncrypt("2095132720951327", "6075877187097700", TEST_PASSWORD), null)); - verify(dashboardUserMapper, times(3)).findByQuery(eq(TEST_USER_NAME), anyString()); + verify(dashboardUserRepository, times(3)).findByUserNameAndPassword(eq(TEST_USER_NAME), anyString()); assertLoginSuccessful(dashboardUserDO, dashboardUserService.login(TEST_USER_NAME, AesUtils.cbcEncrypt("2095132720951327", "6075877187097700", TEST_PASSWORD), null)); - verify(dashboardUserMapper, times(4)).findByQuery(eq(TEST_USER_NAME), anyString()); + verify(dashboardUserRepository, times(4)).findByUserNameAndPassword(eq(TEST_USER_NAME), anyString()); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DataPermissionServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DataPermissionServiceTest.java index 1c19abf45b14..478419a840d6 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DataPermissionServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DataPermissionServiceTest.java @@ -17,6 +17,7 @@ package org.apache.shenyu.admin.service; +import org.apache.shenyu.admin.jpa.repository.DataPermissionRepository; import org.apache.shenyu.admin.mapper.DataPermissionMapper; import org.apache.shenyu.admin.mapper.RuleMapper; import org.apache.shenyu.admin.mapper.SelectorMapper; @@ -65,6 +66,9 @@ public final class DataPermissionServiceTest { @Mock private DataPermissionMapper dataPermissionMapper; + @Mock + private DataPermissionRepository dataPermissionRepository; + @Mock private RuleMapper ruleMapper; @@ -91,14 +95,14 @@ public void setup() { @Test public void assertGetUserDataPermissionList() { List list = Collections.singletonList(DataPermissionDO.buildPermissionDO(dataPermissionDTO)); - given(dataPermissionMapper.listByUserId("1001")).willReturn(list); + given(dataPermissionRepository.findByUserId("1001")).willReturn(list); assertThat(dataPermissionService.getUserDataPermissionList("1001"), is(list)); } @Test public void assertGetDataPermission() { List list = Collections.singletonList(DataPermissionDO.buildPermissionDO(dataPermissionDTO)); - given(dataPermissionMapper.listByUserId("1001")).willReturn(list); + given(dataPermissionRepository.findByUserId("1001")).willReturn(list); List target = Collections.singletonList("1"); assertThat(dataPermissionService.getDataPermission("1001"), is(target)); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DetailServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DetailServiceTest.java index bd060bfebe13..e25fe74fd20b 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DetailServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DetailServiceTest.java @@ -17,6 +17,7 @@ package org.apache.shenyu.admin.service; +import org.apache.shenyu.admin.jpa.repository.DetailRepository; import org.apache.shenyu.admin.mapper.DetailMapper; import org.apache.shenyu.admin.model.dto.DetailDTO; import org.apache.shenyu.admin.model.entity.DetailDO; @@ -34,6 +35,7 @@ import java.sql.Timestamp; import java.util.Date; +import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.times; @@ -55,9 +57,12 @@ public final class DetailServiceTest { @Mock private DetailMapper detailMapper; + @Mock + private DetailRepository detailRepository; + @BeforeEach public void setUp() { - detailService = new DetailServiceImpl(detailMapper); + detailService = new DetailServiceImpl(detailMapper, detailRepository); } @Test @@ -82,9 +87,9 @@ public void testFindById() { detailDO.setFieldValue("field value"); detailDO.setFieldId("field id"); - when(detailMapper.selectByPrimaryKey("1")).thenReturn(detailDO); + when(detailRepository.findById("1")).thenReturn(Optional.of(detailDO)); - DetailService detailService = new DetailServiceImpl(detailMapper); + DetailService detailService = new DetailServiceImpl(detailMapper, detailRepository); DetailVO detailVO = detailService.findById("1"); @@ -96,7 +101,7 @@ public void testFindById() { assertEquals(detailDO.getDateUpdated(), detailVO.getDateUpdated()); assertEquals(detailDO.getDateCreated(), detailVO.getDateCreated()); - verify(detailMapper, times(1)).selectByPrimaryKey("1"); + verify(detailRepository, times(1)).findById("1"); } private void testCreate() { diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DiscoveryUpstreamServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DiscoveryUpstreamServiceTest.java index 28adf2c60940..718051c06fec 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DiscoveryUpstreamServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/DiscoveryUpstreamServiceTest.java @@ -19,6 +19,7 @@ import org.apache.shenyu.admin.discovery.DiscoveryProcessor; import org.apache.shenyu.admin.discovery.DiscoveryProcessorHolder; +import org.apache.shenyu.admin.jpa.repository.DiscoveryUpstreamRepository; import org.apache.shenyu.admin.mapper.DiscoveryHandlerMapper; import org.apache.shenyu.admin.mapper.DiscoveryMapper; import org.apache.shenyu.admin.mapper.DiscoveryRelMapper; @@ -71,6 +72,9 @@ public final class DiscoveryUpstreamServiceTest { @Mock private DiscoveryUpstreamMapper discoveryUpstreamMapper; + @Mock + private DiscoveryUpstreamRepository discoveryUpstreamRepository; + @Mock private DiscoveryHandlerMapper discoveryHandlerMapper; @@ -99,6 +103,7 @@ public final class DiscoveryUpstreamServiceTest { public void setUp() { discoveryUpstreamService = new DiscoveryUpstreamServiceImpl(discoveryUpstreamMapper, + discoveryUpstreamRepository, discoveryHandlerMapper, proxySelectorMapper, discoveryMapper, @@ -149,7 +154,7 @@ public void testListAll() { @Test public void testListAllData() { List list = Collections.singletonList(buildDiscoveryUpstreamDO("")); - when(discoveryUpstreamMapper.selectAll()).thenReturn(list); + when(discoveryUpstreamRepository.findAll()).thenReturn(list); List upstreamVOList = discoveryUpstreamService.listAllData(); assertEquals(upstreamVOList.size(), list.size()); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/FieldServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/FieldServiceTest.java index fb01fa5e7c9f..c4a59c93872a 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/FieldServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/FieldServiceTest.java @@ -25,6 +25,7 @@ import static org.mockito.Mockito.reset; import static org.mockito.Mockito.when; +import org.apache.shenyu.admin.jpa.repository.FieldRepository; import org.apache.shenyu.admin.mapper.FieldMapper; import org.apache.shenyu.admin.model.dto.FieldDTO; import org.apache.shenyu.admin.model.entity.FieldDO; @@ -44,6 +45,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Optional; /** * test for {@linkplain FieldServiceImpl}. @@ -58,6 +60,9 @@ public class FieldServiceTest { @Mock private FieldMapper fieldMapper; + @Mock + private FieldRepository fieldRepository; + @Test public void testCreateOrUpdate() { final FieldDTO fieldDTO = new FieldDTO(); @@ -103,7 +108,7 @@ public void testFindById() { fieldDO.setId("mock test id"); reset(fieldMapper); - when(fieldMapper.selectByPrimaryKey(anyString())).thenReturn(fieldDO); + when(fieldRepository.findById(anyString())).thenReturn(Optional.of(fieldDO)); FieldVO result = fieldService.findById("mock test id"); assertNotNull(result); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/InstanceInfoServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/InstanceInfoServiceTest.java index ab14251dcf72..a704f8b2a3bc 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/InstanceInfoServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/InstanceInfoServiceTest.java @@ -17,6 +17,7 @@ package org.apache.shenyu.admin.service; +import org.apache.shenyu.admin.jpa.repository.InstanceInfoRepository; import org.apache.shenyu.admin.mapper.InstanceInfoMapper; import org.apache.shenyu.admin.model.entity.InstanceInfoDO; import org.apache.shenyu.admin.model.page.CommonPager; @@ -53,11 +54,14 @@ public final class InstanceInfoServiceTest { @Mock private InstanceInfoMapper instanceInfoMapper; + @Mock + private InstanceInfoRepository instanceInfoRepository; + private InstanceInfoVO vo; @BeforeEach void setUp() { - instanceInfoService = new InstanceInfoServiceImpl(instanceInfoMapper); + instanceInfoService = new InstanceInfoServiceImpl(instanceInfoMapper, instanceInfoRepository); vo = buildVO(); } @@ -91,7 +95,7 @@ void testListByPage() { @Test void testList() { - when(instanceInfoMapper.selectAll()).thenReturn(Collections.singletonList(buildDO())); + when(instanceInfoRepository.findAll()).thenReturn(Collections.singletonList(buildDO())); List list = instanceInfoService.list(); assertThat(list, hasSize(1)); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MetaDataServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MetaDataServiceTest.java index 0860090dff2a..995d5c0bc6fc 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MetaDataServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MetaDataServiceTest.java @@ -19,6 +19,7 @@ import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.MetaDataRepository; import org.apache.shenyu.admin.mapper.MetaDataMapper; import org.apache.shenyu.admin.mapper.NamespaceMapper; import org.apache.shenyu.admin.model.dto.MetaDataDTO; @@ -52,6 +53,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; import static org.apache.shenyu.common.constant.Constants.SYS_DEFAULT_NAMESPACE_ID; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -81,6 +83,9 @@ public final class MetaDataServiceTest { @Mock private MetaDataMapper metaDataMapper; + @Mock + private MetaDataRepository metaDataRepository; + @Mock private ApplicationEventPublisher eventPublisher; @@ -175,14 +180,14 @@ public void testSyncDate() { */ @Test public void testFindById() { - when(metaDataMapper.selectById(anyString())).thenReturn(null); + when(metaDataRepository.findById(anyString())).thenReturn(Optional.empty()); MetaDataVO dataVo = metaDataService.findById(anyString()); Assertions.assertEquals(new MetaDataVO(), dataVo); final String appName = "appName"; MetaDataDO metaDataDO = MetaDataDO.builder().build(); metaDataDO.setAppName(appName); - when(metaDataMapper.selectById(anyString())).thenReturn(metaDataDO); + when(metaDataRepository.findById(anyString())).thenReturn(Optional.of(metaDataDO)); dataVo = metaDataService.findById(anyString()); assertEquals(appName, dataVo.getAppName()); } @@ -206,7 +211,7 @@ public void testListByPage() { @Test public void testFindAll() { ArrayList metaDataDOList = getMetaDataDOList(); - when(metaDataMapper.selectAll()).thenReturn(metaDataDOList); + when(metaDataRepository.findAll()).thenReturn(metaDataDOList); List all = metaDataService.findAll(); Assertions.assertEquals(metaDataDOList.size(), all.size(), "The list should be contain " + metaDataDOList.size() + " element."); @@ -217,7 +222,7 @@ public void testFindAll() { */ @Test public void testFindAllGroup() { - when(metaDataMapper.selectAll()).thenReturn(getMetaDataDOList()); + when(metaDataRepository.findAll()).thenReturn(getMetaDataDOList()); Map> allGroup = metaDataService.findAllGroup(); Assertions.assertEquals(3, allGroup.keySet().size(), "There should be 3 groups."); @@ -230,7 +235,7 @@ public void testFindAllGroup() { public void testListAll() { ArrayList metaDataDOList = getMetaDataDOList(); metaDataDOList.add(null); - when(metaDataMapper.selectAll()).thenReturn(metaDataDOList); + when(metaDataRepository.findAll()).thenReturn(metaDataDOList); List all = metaDataService.listAll(); Assertions.assertEquals(metaDataDOList.size() - 1, all.size(), "The List should be contain " + (metaDataDOList.size() - 1) + " element."); @@ -243,7 +248,7 @@ public void testListAll() { public void testListAllData() { ArrayList metaDataDOList = getMetaDataDOList(); metaDataDOList.add(null); - when(metaDataMapper.selectAll()).thenReturn(metaDataDOList); + when(metaDataRepository.findAll()).thenReturn(metaDataDOList); List all = metaDataService.listAllData(); Assertions.assertEquals(metaDataDOList.size() - 1, all.size(), "The List should be contain " + (metaDataDOList.size() - 1) + " element."); @@ -252,7 +257,7 @@ public void testListAllData() { @Test public void testImportData() { List metaDataDOList = getMetaDataDOList(); - when(metaDataMapper.selectAll()).thenReturn(metaDataDOList); + when(metaDataRepository.findAll()).thenReturn(metaDataDOList); final List metaDataDTOList = getMetaDataDTOList(); given(this.metaDataMapper.insert(any())).willReturn(1); @@ -272,7 +277,7 @@ public void testFindByPath() { .appName("appName1") .path("path1") .build(); - given(this.metaDataMapper.findByPathAndNamespaceId(any(), any())).willReturn(metaDataDO1); + given(this.metaDataRepository.findByPathAndNamespaceId(any(), any())).willReturn(Optional.of(metaDataDO1)); MetaDataDO metaDataDO = metaDataService.findByPathAndNamespaceId("path1", SYS_DEFAULT_NAMESPACE_ID); assertNotNull(metaDataDO); Assertions.assertEquals(metaDataDO, metaDataDO1); @@ -287,7 +292,7 @@ public void testFindByServiceNameAndMethodName() { .serviceName("serviceName1") .methodName("method1") .build(); - given(this.metaDataMapper.findByServiceNameAndMethodAndNamespaceId(any(), any(), any())) + given(this.metaDataRepository.findByServiceNameAndMethodNameAndNamespaceId(any(), any(), any())) .willReturn(Collections.singletonList(metaDataDO1)); MetaDataDO metaDataDO = metaDataService .findByServiceNameAndMethodNameAndNamespaceId("serviceName1", "method1", SYS_DEFAULT_NAMESPACE_ID); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MockRequestRecordServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MockRequestRecordServiceTest.java index 2c3eae9f33b5..114456ac9318 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MockRequestRecordServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/MockRequestRecordServiceTest.java @@ -21,6 +21,9 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Optional; + +import org.apache.shenyu.admin.jpa.repository.MockRequestRecordRepository; import org.apache.shenyu.admin.mapper.MockRequestRecordMapper; import org.apache.shenyu.admin.model.dto.MockRequestRecordDTO; import org.apache.shenyu.admin.model.entity.MockRequestRecordDO; @@ -53,6 +56,9 @@ public class MockRequestRecordServiceTest { @Mock private MockRequestRecordMapper mockRequestRecordMapper; + @Mock + private MockRequestRecordRepository mockRequestRecordRepository; + @Test public void testCreateOrUpdate() { MockRequestRecordDTO mockRequestRecordDTO = buildMockRequestRecordDTO(); @@ -67,7 +73,7 @@ public void testCreateOrUpdate() { @Test public void testFindById() { - given(this.mockRequestRecordMapper.queryById("1")).willReturn(buildMockRequestRecordDO()); + given(this.mockRequestRecordRepository.findById("1")).willReturn(Optional.of(buildMockRequestRecordDO())); MockRequestRecordVO mockRequestRecordVO = mockRequestRecordService.findById("1"); assertEquals("123", mockRequestRecordVO.getApiId()); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PermissionServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PermissionServiceTest.java index bbb80544692f..be684085664e 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PermissionServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PermissionServiceTest.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service; import org.apache.shenyu.admin.config.properties.DashboardProperties; +import org.apache.shenyu.admin.jpa.repository.PermissionRepository; import org.apache.shenyu.admin.mapper.DashboardUserMapper; import org.apache.shenyu.admin.mapper.PermissionMapper; import org.apache.shenyu.admin.mapper.ResourceMapper; @@ -76,7 +77,10 @@ public final class PermissionServiceTest { @Mock private PermissionMapper mockPermissionMapper; - + + @Mock + private PermissionRepository mockPermissionRepository; + @Mock private ResourceMapper mockResourceMapper; diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PluginHandleServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PluginHandleServiceTest.java index 53e861d600de..60d0ceaa4f85 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PluginHandleServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PluginHandleServiceTest.java @@ -17,6 +17,7 @@ package org.apache.shenyu.admin.service; +import org.apache.shenyu.admin.jpa.repository.PluginHandleRepository; import org.apache.shenyu.admin.mapper.PluginHandleMapper; import org.apache.shenyu.admin.mapper.ShenyuDictMapper; import org.apache.shenyu.admin.model.dto.PluginHandleDTO; @@ -60,15 +61,18 @@ public final class PluginHandleServiceTest { @Mock private PluginHandleMapper pluginHandleMapper; + @Mock + private PluginHandleRepository pluginHandleRepository; + @Mock private ShenyuDictMapper shenyuDictMapper; - + @Mock private PluginHandleEventPublisher eventPublisher; @BeforeEach public void setUp() { - pluginHandleService = new PluginHandleServiceImpl(pluginHandleMapper, shenyuDictMapper, eventPublisher); + pluginHandleService = new PluginHandleServiceImpl(pluginHandleMapper, pluginHandleRepository, shenyuDictMapper, eventPublisher); } @Test @@ -157,7 +161,7 @@ public void testDeletePluginHandles() { @Test public void testFindById() { PluginHandleDO pluginHandleDO = buildPluginHandleDO(); - given(this.pluginHandleMapper.selectById("4")).willReturn(pluginHandleDO); + given(this.pluginHandleRepository.findById("4")).willReturn(java.util.Optional.of(pluginHandleDO)); final PluginHandleVO result = this.pluginHandleService.findById("4"); assertThat(result, notNullValue()); assertEquals(pluginHandleDO.getPluginId(), result.getPluginId()); @@ -167,7 +171,7 @@ public void testFindById() { public void testFindByIdWhenDataTypeEqualSelectBox() { PluginHandleDO pluginHandleDO = buildPluginHandleDO(); pluginHandleDO.setDataType(3); - given(this.pluginHandleMapper.selectById("4")).willReturn(pluginHandleDO); + given(this.pluginHandleRepository.findById("4")).willReturn(java.util.Optional.of(pluginHandleDO)); given(this.shenyuDictMapper.findByType(any())).willReturn(buildShenyuDictDOs()); final PluginHandleVO result = this.pluginHandleService.findById("4"); assertThat(result, notNullValue()); @@ -205,7 +209,7 @@ private List buildShenyuDictDOs() { public void testList() { final List pluginHandleDOs = buildPluginHandleDOList(); final List shenyuDictDOList = buildShenyuDictDOs(); - given(this.pluginHandleMapper.selectByQuery(any())).willReturn(pluginHandleDOs); + given(this.pluginHandleRepository.findByPluginId(any())).willReturn(pluginHandleDOs); given(this.shenyuDictMapper.findByTypeBatch(any())).willReturn(shenyuDictDOList); final List result = pluginHandleService.list("4", 2); assertThat(result, notNullValue()); @@ -216,7 +220,7 @@ public void testList() { public void testListAllData() { final List pluginHandleDOs = buildPluginHandleDOList(); final List shenyuDictDOList = buildShenyuDictDOs(); - given(this.pluginHandleMapper.selectByQuery(any())).willReturn(pluginHandleDOs); + given(this.pluginHandleRepository.findAll()).willReturn(pluginHandleDOs); given(this.shenyuDictMapper.findByTypeBatch(any())).willReturn(shenyuDictDOList); final List result = pluginHandleService.listAllData(); assertThat(result, notNullValue()); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PluginServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PluginServiceTest.java index 2579e15597bf..8f7421a39be0 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PluginServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/PluginServiceTest.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.PluginRepository; import org.apache.shenyu.admin.mapper.NamespacePluginRelMapper; import org.apache.shenyu.admin.mapper.PluginMapper; import org.apache.shenyu.admin.mapper.SelectorMapper; @@ -51,6 +52,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -77,6 +79,9 @@ public final class PluginServiceTest { @Mock private PluginMapper pluginMapper; + @Mock + private PluginRepository pluginRepository; + @Mock private SelectorMapper selectorMapper; @@ -88,7 +93,7 @@ public final class PluginServiceTest { @BeforeEach public void setUp() { - pluginService = new PluginServiceImpl(pluginMapper, modelDataEventPublisher, namespacePluginRelMapper); + pluginService = new PluginServiceImpl(pluginMapper, pluginRepository, modelDataEventPublisher, namespacePluginRelMapper); } @Test @@ -147,7 +152,7 @@ public void testEnableShouldSysPluginIdNotExist() { @Test public void testFindById() { PluginDO pluginDO = buildPluginDO(); - given(this.pluginMapper.selectById(eq("123"))).willReturn(pluginDO); + given(this.pluginRepository.findById(eq("123"))).willReturn(Optional.of(pluginDO)); PluginVO pluginVO = this.pluginService.findById("123"); assertNotNull(pluginVO); assertEquals(pluginDO.getId(), pluginVO.getId()); @@ -170,7 +175,7 @@ public void testListByPage() { public void testListAll() { PluginDO pluginDO = buildPluginDO("123"); List pluginDOList = Collections.singletonList(pluginDO); - given(this.pluginMapper.selectAll()).willReturn(pluginDOList); + given(this.pluginRepository.findAll()).willReturn(pluginDOList); List dataList = this.pluginService.listAll(); assertNotNull(dataList); assertEquals(pluginDOList.size(), dataList.size()); @@ -180,7 +185,7 @@ public void testListAll() { public void testListAllData() { PluginDO pluginDO = buildPluginDO("123"); List pluginDOList = Collections.singletonList(pluginDO); - given(this.pluginMapper.selectAll()).willReturn(pluginDOList); + given(this.pluginRepository.findAll()).willReturn(pluginDOList); List dataList = this.pluginService.listAllData(); assertNotNull(dataList); assertEquals(pluginDOList.size(), dataList.size()); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ProxySelectorServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ProxySelectorServiceTest.java index 6948169dc823..325028ae4815 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ProxySelectorServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ProxySelectorServiceTest.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service; import org.apache.shenyu.admin.discovery.DiscoveryProcessorHolder; +import org.apache.shenyu.admin.jpa.repository.ProxySelectorRepository; import org.apache.shenyu.admin.mapper.DiscoveryHandlerMapper; import org.apache.shenyu.admin.mapper.DiscoveryMapper; import org.apache.shenyu.admin.mapper.DiscoveryRelMapper; @@ -64,6 +65,9 @@ class ProxySelectorServiceTest { @Mock private ProxySelectorMapper proxySelectorMapper; + @Mock + private ProxySelectorRepository proxySelectorRepository; + @Mock private DiscoveryMapper discoveryMapper; @@ -85,7 +89,7 @@ class ProxySelectorServiceTest { @BeforeEach void testSetUp() { - proxySelectorService = new ProxySelectorServiceImpl(proxySelectorMapper, discoveryMapper, discoveryUpstreamMapper, + proxySelectorService = new ProxySelectorServiceImpl(proxySelectorMapper, proxySelectorRepository, discoveryMapper, discoveryUpstreamMapper, discoveryHandlerMapper, discoveryRelMapper, selectorMapper, discoveryProcessorHolder); } @@ -131,7 +135,7 @@ void testDelete() { @Test void testListAllData() { List selectorDOList = Collections.singletonList(buildProxySelectorDO()); - given(proxySelectorMapper.selectAll()).willReturn(selectorDOList); + given(proxySelectorRepository.findAll()).willReturn(selectorDOList); given(discoveryRelMapper.selectByProxySelectorId(any())).willReturn(buildDiscoveryRelDO()); List selectorVOList = proxySelectorService.listAllData(); assertNotNull(selectorVOList); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ResourceServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ResourceServiceTest.java index db6e68d719c4..83e39f4113e5 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ResourceServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ResourceServiceTest.java @@ -28,6 +28,7 @@ import static org.mockito.Mockito.when; import org.apache.shenyu.admin.config.properties.DashboardProperties; +import org.apache.shenyu.admin.jpa.repository.ResourceRepository; import org.apache.shenyu.admin.mapper.PermissionMapper; import org.apache.shenyu.admin.mapper.ResourceMapper; import org.apache.shenyu.admin.model.dto.CreateResourceDTO; @@ -47,6 +48,7 @@ import java.sql.Timestamp; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import org.assertj.core.util.Lists; @@ -70,6 +72,9 @@ public class ResourceServiceTest { @Mock private ResourceMapper resourceMapper; + + @Mock + private ResourceRepository resourceRepository; @Mock private PermissionMapper permissionMapper; @@ -154,7 +159,7 @@ public void testSelectById() { resourceDO.setDateUpdated(new Timestamp(System.currentTimeMillis())); reset(resourceMapper); - when(resourceMapper.selectById(mockResourceId)).thenReturn(resourceDO); + when(resourceRepository.findById(mockResourceId)).thenReturn(Optional.of(resourceDO)); assertThat(resourceService.findById(mockResourceId), equalTo(ResourceVO.buildResourceVO(resourceDO))); } @@ -193,7 +198,7 @@ public void testListByPage() { @Test public void testGetMenuTreeWhenTheresNoResource() { reset(resourceMapper); - when(resourceMapper.selectAll()).thenReturn(Collections.emptyList()); + when(resourceRepository.findAll()).thenReturn(Collections.emptyList()); assertNull(resourceService.getMenuTree()); } @@ -226,7 +231,7 @@ public void testGetMenuTreeWhenThereAreResources() { final List mockSelectAllResult = newArrayList(parentResource, childResource1, childResource2); reset(resourceMapper); - when(resourceMapper.selectAll()).thenReturn(mockSelectAllResult); + when(resourceRepository.findAll()).thenReturn(mockSelectAllResult); List menuInfoList = ResourceUtil.buildMenu(mockSelectAllResult.stream().map(ResourceVO::buildResourceVO).collect(Collectors.toList())); assertThat(resourceService.getMenuTree(), equalTo(menuInfoList)); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/RoleServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/RoleServiceTest.java index 169a5239d18c..afd9631af4d8 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/RoleServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/RoleServiceTest.java @@ -17,6 +17,7 @@ package org.apache.shenyu.admin.service; +import org.apache.shenyu.admin.jpa.repository.RoleRepository; import org.apache.shenyu.admin.mapper.PermissionMapper; import org.apache.shenyu.admin.mapper.ResourceMapper; import org.apache.shenyu.admin.mapper.RoleMapper; @@ -44,6 +45,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import static org.hamcrest.CoreMatchers.equalTo; @@ -69,6 +71,9 @@ public class RoleServiceTest { @Mock private RoleMapper roleMapper; + @Mock + private RoleRepository roleRepository; + @Mock private PermissionMapper permissionMapper; @@ -139,7 +144,7 @@ public void testDelete() { @Test public void testFindById() { RoleDO roleDO = buildRoleDO(); - given(roleMapper.selectById(roleDO.getId())).willReturn(roleDO); + given(roleRepository.findById(roleDO.getId())).willReturn(Optional.of(roleDO)); RoleEditVO result = roleService.findById(roleDO.getId()); assertEquals(RoleVO.buildRoleVO(roleDO), result.getSysRole()); } @@ -147,7 +152,7 @@ public void testFindById() { @Test public void testFindByQuery() { RoleDO roleDO = buildRoleDO(); - given(roleMapper.findByRoleName(roleDO.getRoleName())).willReturn(roleDO); + given(roleRepository.findByRoleName(roleDO.getRoleName())).willReturn(Optional.of(roleDO)); RoleVO result = roleService.findByQuery(roleDO.getRoleName()); assertEquals(RoleVO.buildRoleVO(roleDO), result); } @@ -166,7 +171,7 @@ public void testListByPage() { @Test public void testSelectAll() { List roleDOs = Collections.singletonList(buildRoleDO()); - given(roleMapper.selectAll()).willReturn(roleDOs); + given(roleRepository.findAll()).willReturn(roleDOs); List roleVOS = roleService.selectAll(); assertEquals(roleDOs.stream().map(RoleVO::buildRoleVO).collect(Collectors.toList()), roleVOS); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/RuleServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/RuleServiceTest.java index 6810d962e103..6763baf0a143 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/RuleServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/RuleServiceTest.java @@ -22,6 +22,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.RuleRepository; import org.apache.shenyu.admin.mapper.DataPermissionMapper; import org.apache.shenyu.admin.mapper.PluginMapper; import org.apache.shenyu.admin.mapper.RuleConditionMapper; @@ -94,6 +95,9 @@ public final class RuleServiceTest { @Mock private RuleMapper ruleMapper; + @Mock + private RuleRepository ruleRepository; + @Mock private RuleConditionMapper ruleConditionMapper; @@ -112,7 +116,7 @@ public final class RuleServiceTest { @BeforeEach public void setUp() { when(dataPermissionMapper.listByUserId("1")).thenReturn(Collections.singletonList(DataPermissionDO.buildPermissionDO(new DataPermissionDTO()))); - ruleService = new RuleServiceImpl(ruleMapper, ruleConditionMapper, selectorMapper, pluginMapper, ruleEventPublisher); + ruleService = new RuleServiceImpl(ruleMapper, ruleRepository, ruleConditionMapper, selectorMapper, pluginMapper, ruleEventPublisher); } @Test @@ -142,7 +146,7 @@ public void testDelete() { @Test public void testFindById() { RuleDO ruleDO = buildRuleDO("123"); - given(this.ruleMapper.selectById("123")).willReturn(ruleDO); + given(this.ruleRepository.findById("123")).willReturn(Optional.of(ruleDO)); RuleConditionQuery ruleConditionQuery = buildRuleConditionQuery(); RuleConditionDO ruleCondition = buildRuleConditionDO(); given(this.ruleConditionMapper.selectByQuery(ruleConditionQuery)).willReturn(Collections.singletonList(ruleCondition)); @@ -179,7 +183,7 @@ public void testListAllData() { given(this.ruleConditionMapper.selectByQuery(ruleConditionQuery)).willReturn(Collections.singletonList(ruleCondition)); RuleDO ruleDO = buildRuleDO("123"); List ruleDOList = Collections.singletonList(ruleDO); - given(this.ruleMapper.selectAll()).willReturn(ruleDOList); + given(this.ruleRepository.findAll()).willReturn(ruleDOList); List dataList = this.ruleService.listAllData(); assertNotNull(dataList); assertEquals(ruleDOList.size(), dataList.size()); @@ -230,7 +234,7 @@ private void checkListAll(final Integer expected) { given(this.ruleConditionMapper.selectByQuery(ruleConditionQuery)).willReturn(Collections.singletonList(ruleCondition)); RuleDO ruleDO = buildRuleDO("123"); List ruleDOList = Collections.singletonList(ruleDO); - given(this.ruleMapper.selectAll()).willReturn(ruleDOList); + given(this.ruleRepository.findAll()).willReturn(ruleDOList); List dataList = this.ruleService.listAll(); assertNotNull(dataList); assertEquals(Optional.ofNullable(expected).orElse(ruleDOList.size()), dataList.size()); @@ -244,7 +248,7 @@ public void testFindBySelectorId() { given(this.ruleConditionMapper.selectByQuery(ruleConditionQuery)).willReturn(Collections.singletonList(ruleCondition)); RuleDO ruleDO = buildRuleDO("123"); List ruleDOList = Collections.singletonList(ruleDO); - given(this.ruleMapper.findBySelectorId("456")).willReturn(ruleDOList); + given(this.ruleRepository.findBySelectorId("456")).willReturn(ruleDOList); List dataList = this.ruleService.findBySelectorId("456"); assertNotNull(dataList); assertEquals(ruleDOList.size(), dataList.size()); @@ -258,7 +262,7 @@ public void testFindBySelectorIdList() { given(this.ruleConditionMapper.selectByQuery(ruleConditionQuery)).willReturn(Collections.singletonList(ruleCondition)); RuleDO ruleDO = buildRuleDO("123"); List ruleDOList = Collections.singletonList(ruleDO); - given(this.ruleMapper.findBySelectorIds(Collections.singletonList("456"))).willReturn(ruleDOList); + given(this.ruleRepository.findBySelectorIdIn(Collections.singletonList("456"))).willReturn(ruleDOList); List dataList = this.ruleService.findBySelectorIdList(Collections.singletonList("456")); assertNotNull(dataList); assertEquals(ruleDOList.size(), dataList.size()); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/SelectorServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/SelectorServiceTest.java index 5396ebb0ba64..57e942964758 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/SelectorServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/SelectorServiceTest.java @@ -20,6 +20,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shenyu.admin.discovery.DiscoveryProcessor; import org.apache.shenyu.admin.discovery.DiscoveryProcessorHolder; +import org.apache.shenyu.admin.jpa.repository.SelectorRepository; import org.apache.shenyu.admin.mapper.DataPermissionMapper; import org.apache.shenyu.admin.mapper.DiscoveryHandlerMapper; import org.apache.shenyu.admin.mapper.DiscoveryMapper; @@ -69,6 +70,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.Random; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -101,6 +103,9 @@ public final class SelectorServiceTest { @Mock private SelectorMapper selectorMapper; + @Mock + private SelectorRepository selectorRepository; + @Mock private SelectorConditionMapper selectorConditionMapper; @@ -153,7 +158,8 @@ public void setUp() { when(discoveryHandlerMapper.selectBySelectorId(anyString())).thenReturn(discoveryHandlerDO); doNothing().when(discoveryProcessor).removeDiscovery(any(DiscoveryDO.class)); when(discoveryProcessorHolder.chooseProcessor(anyString())).thenReturn(discoveryProcessor); - selectorService = new SelectorServiceImpl(selectorMapper, selectorConditionMapper, pluginMapper, eventPublisher, discoveryMapper, discoveryHandlerMapper, discoveryRelMapper, + selectorService = new SelectorServiceImpl(selectorMapper, selectorRepository, selectorConditionMapper, + pluginMapper, eventPublisher, discoveryMapper, discoveryHandlerMapper, discoveryRelMapper, discoveryUpstreamMapper, discoveryProcessorHolder, selectorEventPublisher); } @@ -202,7 +208,7 @@ public void testDelete() { @Test public void testFindById() { SelectorDO selectorDO = buildSelectorDO(); - given(this.selectorMapper.selectById(eq("123"))).willReturn(selectorDO); + given(this.selectorRepository.findById(eq("123"))).willReturn(Optional.of(selectorDO)); SelectorVO selectorVO = this.selectorService.findById("123"); assertNotNull(selectorDO); assertEquals(selectorVO.getId(), selectorDO.getId()); @@ -241,7 +247,7 @@ public void testFindByPluginId() { @Test public void testListAll() { final List selectorDOs = buildSelectorDOList(); - given(this.selectorMapper.selectAll()).willReturn(selectorDOs); + given(this.selectorRepository.findAll()).willReturn(selectorDOs); given(this.pluginMapper.selectByIds(any())).willReturn(Collections.singletonList(buildPluginDO())); List dataList = this.selectorService.listAll(); assertNotNull(dataList); @@ -260,7 +266,7 @@ public void testHandlerSelectorNeedUpstreamCheck() { @Test public void testListAllData() { final List selectorDOs = buildSelectorDOList(); - given(this.selectorMapper.selectAll()).willReturn(selectorDOs); + given(this.selectorRepository.findAll()).willReturn(selectorDOs); given(this.pluginMapper.selectByIds(any())).willReturn(Collections.singletonList(buildPluginDO())); List dataList = this.selectorService.listAllData(); assertNotNull(dataList); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ShenyuDictServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ShenyuDictServiceTest.java index c99b04f11250..609ffd9bae3c 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ShenyuDictServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ShenyuDictServiceTest.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service; import org.apache.commons.lang3.StringUtils; +import org.apache.shenyu.admin.jpa.repository.ShenyuDictRepository; import org.apache.shenyu.admin.mapper.ShenyuDictMapper; import org.apache.shenyu.admin.model.dto.BatchCommonDTO; import org.apache.shenyu.admin.model.dto.ShenyuDictDTO; @@ -65,6 +66,9 @@ public final class ShenyuDictServiceTest { @Mock private ShenyuDictMapper shenyuDictMapper; + + @Mock + private ShenyuDictRepository shenyuDictRepository; @Mock private DictEventPublisher publisher; @@ -72,7 +76,7 @@ public final class ShenyuDictServiceTest { @Test public void testFindByType() { ShenyuDictDO shenyuDictDO = buildShenyuDictDO(); - given(this.shenyuDictMapper.selectByQuery(any())).willReturn(Collections.singletonList(shenyuDictDO)); + given(this.shenyuDictRepository.findByType(any())).willReturn(Collections.singletonList(shenyuDictDO)); List shenyuDictVOList = this.shenyuDictService.list("rule"); assertEquals(1, shenyuDictVOList.size()); assertEquals(shenyuDictDO.getId(), shenyuDictVOList.get(0).getId()); @@ -81,7 +85,7 @@ public void testFindByType() { @Test public void testFindById() { ShenyuDictDO shenyuDictDO = buildShenyuDictDO(); - given(this.shenyuDictMapper.selectById(eq("123"))).willReturn(shenyuDictDO); + given(this.shenyuDictRepository.findById(eq("123"))).willReturn(Optional.of(shenyuDictDO)); ShenyuDictVO shenyuDictVO = this.shenyuDictService.findById("123"); assertNotNull(shenyuDictVO); assertEquals(shenyuDictDO.getId(), shenyuDictVO.getId()); @@ -154,7 +158,7 @@ public void testListByPage() { @Test public void testListAllData() { List shenyuDictDOList = IntStream.range(0, 10).mapToObj(i -> buildShenyuDictDO()).collect(Collectors.toList()); - given(this.shenyuDictMapper.selectByQuery(any())).willReturn(shenyuDictDOList); + given(this.shenyuDictRepository.findAll()).willReturn(shenyuDictDOList); List shenyuDictVOList = shenyuDictService.listAllData(); assertEquals(shenyuDictVOList.size(), shenyuDictDOList.size()); } @@ -162,7 +166,7 @@ public void testListAllData() { @Test public void testImportData() { List shenyuDictDOList = Collections.singletonList(buildShenyuDictDO("haha")); - given(this.shenyuDictMapper.selectByQuery(any())).willReturn(shenyuDictDOList); + given(this.shenyuDictRepository.findAll()).willReturn(shenyuDictDOList); List shenyuDictDTOList = Collections.singletonList(buildShenyuDictDTO(null, "lala")); ConfigImportResult configImportResult = shenyuDictService.importData(shenyuDictDTOList); diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/TagRelationServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/TagRelationServiceTest.java index 2b18c6ea3ca0..fcaeb0b138d3 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/TagRelationServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/TagRelationServiceTest.java @@ -22,6 +22,9 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Optional; + +import org.apache.shenyu.admin.jpa.repository.TagRelationRepository; import org.apache.shenyu.admin.mapper.TagRelationMapper; import org.apache.shenyu.admin.model.dto.TagRelationDTO; import org.apache.shenyu.admin.model.entity.TagRelationDO; @@ -52,6 +55,9 @@ public class TagRelationServiceTest { @Mock private TagRelationMapper tagRelationMapper; + @Mock + private TagRelationRepository tagRelationRepository; + @Test public void testCreate() { TagRelationDTO tagRelationDTO = buildTagRelationDTO(); @@ -78,7 +84,7 @@ public void testDelete() { @Test public void testFindId() { - given(this.tagRelationMapper.selectByPrimaryKey(any())).willReturn(buildTagRelationDO()); + given(this.tagRelationRepository.findById(any())).willReturn(Optional.of(buildTagRelationDO())); TagRelationDO tagRelationDO = tagRelationService.findById("11111"); assertNotNull(tagRelationDO); } @@ -87,7 +93,7 @@ public void testFindId() { public void testFindByTagId() { List tagRelationDOList = new ArrayList<>(); tagRelationDOList.add(buildTagRelationDO()); - given(this.tagRelationMapper.selectByQuery(any())).willReturn(tagRelationDOList); + given(this.tagRelationRepository.findByTagId(any())).willReturn(tagRelationDOList); List tagRelationDOS = tagRelationService.findByTagId("123"); assertEquals(tagRelationDOS.size(), 1); } @@ -96,7 +102,7 @@ public void testFindByTagId() { public void testFindByApiId() { List tagRelationDOList = new ArrayList<>(); tagRelationDOList.add(buildTagRelationDO()); - given(this.tagRelationMapper.selectByQuery(any())).willReturn(tagRelationDOList); + given(this.tagRelationRepository.findByApiId(any())).willReturn(tagRelationDOList); List tagRelationDOS = tagRelationService.findApiId("123456"); assertEquals(tagRelationDOS.size(), 1); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/TagServiceTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/TagServiceTest.java index 7e5c7f9bbe22..89d752e808fa 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/TagServiceTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/TagServiceTest.java @@ -18,6 +18,7 @@ package org.apache.shenyu.admin.service; import com.google.common.collect.Lists; +import org.apache.shenyu.admin.jpa.repository.TagRepository; import org.apache.shenyu.admin.mapper.TagMapper; import org.apache.shenyu.admin.model.dto.TagDTO; import org.apache.shenyu.admin.model.entity.TagDO; @@ -35,6 +36,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -51,6 +53,9 @@ public class TagServiceTest { @Mock private TagMapper tagMapper; + @Mock + private TagRepository tagRepository; + @InjectMocks private TagServiceImpl tagService; @@ -92,7 +97,7 @@ public void testDelete() { @Test public void testFindById() { - given(this.tagMapper.selectByPrimaryKey(any())).willReturn(buildTagDO()); + given(this.tagRepository.findById(any())).willReturn(Optional.of(buildTagDO())); TagVO tagVO = tagService.findById("123"); assertNotNull(tagVO); } @@ -106,7 +111,8 @@ public void testFindByQuery() { @Test public void testFindByParentTagId() { - given(this.tagMapper.selectByQuery(any())).willReturn(Lists.newArrayList(buildTagDO())); + given(this.tagRepository.findByParentTagId(any())).willReturn(Lists.newArrayList(buildTagDO())); + given(this.tagRepository.findByParentTagIdIn(any())).willReturn(Lists.newArrayList(buildTagDO())); List tagVOList = tagService.findByParentTagId("111111"); assertEquals(tagVOList.size(), 1); } diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/impl/AiProxyApiKeyServiceImplTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/impl/AiProxyApiKeyServiceImplTest.java index 5a61614c3bd9..757c556d5571 100644 --- a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/impl/AiProxyApiKeyServiceImplTest.java +++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/impl/AiProxyApiKeyServiceImplTest.java @@ -17,10 +17,12 @@ package org.apache.shenyu.admin.service.impl; +import org.apache.shenyu.admin.jpa.repository.AiProxyApiKeyRepository; import org.apache.shenyu.admin.listener.DataChangedEvent; import org.apache.shenyu.admin.mapper.AiProxyApiKeyMapper; import org.apache.shenyu.admin.model.dto.ProxyApiKeyDTO; import org.apache.shenyu.admin.model.entity.ProxyApiKeyDO; +import org.apache.shenyu.admin.model.page.PageResultUtils; import org.apache.shenyu.admin.model.query.ProxyApiKeyQuery; import org.apache.shenyu.admin.model.vo.ProxyApiKeyVO; import org.apache.shenyu.admin.model.page.PageParameter; @@ -45,12 +47,16 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.apache.shenyu.admin.service.support.AiProxyRealKeyResolver; +import org.springframework.data.domain.PageImpl; class AiProxyApiKeyServiceImplTest { @Mock private AiProxyApiKeyMapper mapper; + @Mock + private AiProxyApiKeyRepository repository; + @Mock private ApplicationEventPublisher publisher; @@ -63,7 +69,7 @@ class AiProxyApiKeyServiceImplTest { @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); - service = new AiProxyApiKeyServiceImpl(mapper, publisher, realKeyResolver); + service = new AiProxyApiKeyServiceImpl(mapper, repository, publisher, realKeyResolver); } @Test @@ -138,13 +144,14 @@ void testListByPage() { ProxyApiKeyQuery query = new ProxyApiKeyQuery(); query.setNamespaceId("default"); query.setPageParameter(new PageParameter(1, 10)); - ProxyApiKeyVO vo = new ProxyApiKeyVO(); - vo.setId("1"); - vo.setProxyApiKey("p"); - vo.setDescription("d"); - vo.setEnabled(Boolean.TRUE); - vo.setNamespaceId("default"); - when(mapper.selectByCondition(any())).thenReturn(Collections.singletonList(vo)); + ProxyApiKeyDO proxyApiKeyDO = new ProxyApiKeyDO(); + proxyApiKeyDO.setId("1"); + proxyApiKeyDO.setProxyApiKey("p"); + proxyApiKeyDO.setDescription("d"); + proxyApiKeyDO.setEnabled(Boolean.TRUE); + proxyApiKeyDO.setNamespaceId("default"); + PageImpl page = new PageImpl<>(Collections.singletonList(proxyApiKeyDO), PageResultUtils.of(query.getPageParameter()), 1); + when(repository.pageByCondition(any(), any())).thenReturn(page); CommonPager pager = service.listByPage(query); assertEquals(1, pager.getDataList().size()); assertEquals("p", pager.getDataList().get(0).getProxyApiKey()); @@ -154,10 +161,10 @@ void testListByPage() { void testSearchByCondition() { ProxyApiKeyQuery query = new ProxyApiKeyQuery(); query.setNamespaceId("default"); - ProxyApiKeyVO vo = new ProxyApiKeyVO(); - vo.setId("2"); - vo.setProxyApiKey("px"); - when(mapper.selectByCondition(any())).thenReturn(Collections.singletonList(vo)); + ProxyApiKeyDO proxyApiKeyDO = new ProxyApiKeyDO(); + proxyApiKeyDO.setId("2"); + proxyApiKeyDO.setProxyApiKey("px"); + when(repository.selectByCondition(any())).thenReturn(Collections.singletonList(proxyApiKeyDO)); List list = service.searchByCondition(query); assertEquals(1, list.size()); assertEquals("px", list.get(0).getProxyApiKey()); diff --git a/shenyu-admin/src/test/resources/application-h2.yml b/shenyu-admin/src/test/resources/application-h2.yml index fcd845fc4410..6f339c822e2e 100644 --- a/shenyu-admin/src/test/resources/application-h2.yml +++ b/shenyu-admin/src/test/resources/application-h2.yml @@ -20,6 +20,8 @@ shenyu: init_enable: true spring: + jpa: + database: MYSQL datasource: url: jdbc:h2:mem:~/shenyu;DB_CLOSE_DELAY=-1;MODE=MySQL; username: sa diff --git a/shenyu-admin/src/test/resources/application.yml b/shenyu-admin/src/test/resources/application.yml index 764e8b2d33c9..779c7842a88d 100644 --- a/shenyu-admin/src/test/resources/application.yml +++ b/shenyu-admin/src/test/resources/application.yml @@ -20,6 +20,17 @@ server: spring: profiles: active: h2 + jpa: + open-in-view: false + show-sql: false + hibernate: + ddl-auto: none + properties: + hibernate: + jdbc: + batch_size: 30 + order_inserts: true + order_updates: true thymeleaf: cache: true encoding: utf-8 @@ -125,3 +136,5 @@ logging: org.apache.shenyu.bonuspoint: info org.apache.shenyu.lottery: info org.apache.shenyu: info + org.hibernate.SQL: DEBUG + org.hibernate.orm.jdbc.bind: TRACE \ No newline at end of file diff --git a/shenyu-alert/src/main/java/org/apache/shenyu/alert/model/AlertReceiverDTO.java b/shenyu-alert/src/main/java/org/apache/shenyu/alert/model/AlertReceiverDTO.java index 1a483832bc5a..1de219d849a8 100644 --- a/shenyu-alert/src/main/java/org/apache/shenyu/alert/model/AlertReceiverDTO.java +++ b/shenyu-alert/src/main/java/org/apache/shenyu/alert/model/AlertReceiverDTO.java @@ -21,6 +21,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Objects; /** * AlertReceiver. @@ -613,7 +614,31 @@ public void setDateCreated(final Date dateCreated) { public Date getDateUpdated() { return dateUpdated; } - + + @Override + public boolean equals(final Object o) { + if (Objects.isNull(o) || getClass() != o.getClass()) { + return false; + } + AlertReceiverDTO that = (AlertReceiverDTO) o; + return enable == that.enable && matchAll == that.matchAll && Objects.equals(id, that.id) && Objects.equals(name, that.name) + && Objects.equals(type, that.type) && Objects.equals(phone, that.phone) && Objects.equals(email, that.email) && Objects.equals(hookUrl, that.hookUrl) + && Objects.equals(wechatId, that.wechatId) && Objects.equals(accessToken, that.accessToken) && Objects.equals(tgBotToken, that.tgBotToken) + && Objects.equals(tgUserId, that.tgUserId) && Objects.equals(slackWebHookUrl, that.slackWebHookUrl) && Objects.equals(corpId, that.corpId) + && Objects.equals(agentId, that.agentId) && Objects.equals(appSecret, that.appSecret) && Objects.equals(discordChannelId, that.discordChannelId) + && Objects.equals(discordBotToken, that.discordBotToken) && Objects.equals(smnAk, that.smnAk) && Objects.equals(smnSk, that.smnSk) + && Objects.equals(smnProjectId, that.smnProjectId) && Objects.equals(smnRegion, that.smnRegion) && Objects.equals(smnTopicUrn, that.smnTopicUrn) + && Objects.equals(levels, that.levels) && Objects.equals(labels, that.labels) && Objects.equals(namespaceId, that.namespaceId) && Objects.equals(dateCreated, that.dateCreated) + && Objects.equals(dateUpdated, that.dateUpdated); + } + + @Override + public int hashCode() { + return Objects.hash(id, name, enable, type, phone, email, hookUrl, wechatId, accessToken, tgBotToken, tgUserId, + slackWebHookUrl, corpId, agentId, appSecret, discordChannelId, discordBotToken, smnAk, smnSk, smnProjectId, + smnRegion, smnTopicUrn, matchAll, levels, labels, namespaceId, dateCreated, dateUpdated); + } + /** * set dateUpdated. * From 780d92caaf5f8eb67326de1796c2b8c106345f30 Mon Sep 17 00:00:00 2001 From: eye-gu <734164350@qq.com> Date: Wed, 11 Mar 2026 17:17:54 +0800 Subject: [PATCH 2/7] Optimize SentinelPluginTest to reduce cleanPlugin calls and prevent timeout issues --- .../test/http/combination/SentinelPluginTest.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java b/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java index ffe81bf29f03..61242767a91d 100644 --- a/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java +++ b/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java @@ -29,8 +29,8 @@ import org.apache.shenyu.integratedtest.common.helper.HttpHelper; import org.apache.shenyu.integratedtest.common.result.ResultBean; import org.apache.shenyu.web.controller.LocalPluginController.RuleLocalData; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -50,8 +50,9 @@ public final class SentinelPluginTest extends AbstractPluginDataInit { private static final String TEST_SENTINEL_FALLBACK_PATH = "/http/test/request/accepted"; - @BeforeEach - public void setup() throws IOException { + @BeforeAll + public static void globalSetup() throws IOException { + cleanPluginData(PluginEnum.SENTINEL.getName()); String pluginResult = initPlugin(PluginEnum.SENTINEL.getName(), "{\"model\":\"black\"}"); assertThat(pluginResult, is("success")); } @@ -122,8 +123,8 @@ private static List buildRuleLocalDataList(final String fallbackU return Lists.newArrayList(ruleLocalData); } - @AfterEach - public void clean() throws IOException { + @AfterAll + public static void clean() throws IOException { cleanPluginData(PluginEnum.SENTINEL.getName()); } } From bb7795a1827716405966d1ef1929878faf2f6d15 Mon Sep 17 00:00:00 2001 From: eye-gu <734164350@qq.com> Date: Wed, 11 Mar 2026 17:53:41 +0800 Subject: [PATCH 3/7] Use different URIs --- .../http/combination/SentinelPluginTest.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java b/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java index 61242767a91d..3e575b07f6ab 100644 --- a/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java +++ b/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java @@ -46,8 +46,6 @@ public final class SentinelPluginTest extends AbstractPluginDataInit { - private static final String TEST_SENTINEL_PATH = "/http/test/sentinel/pass"; - private static final String TEST_SENTINEL_FALLBACK_PATH = "/http/test/request/accepted"; @BeforeAll @@ -59,31 +57,33 @@ public static void globalSetup() throws IOException { @Test public void test() throws IOException { + String uri = "/http/test/sentinel/pass"; String selectorAndRulesResult = - initSelectorAndRules(PluginEnum.SENTINEL.getName(), "", buildSelectorConditionList(), buildRuleLocalDataList(null)); + initSelectorAndRules(PluginEnum.SENTINEL.getName(), "", buildSelectorConditionList(), buildRuleLocalDataList(uri, null)); assertThat(selectorAndRulesResult, is("success")); Type returnType = new TypeToken>() { }.getType(); - Map result = HttpHelper.INSTANCE.postGateway(TEST_SENTINEL_PATH, returnType); + Map result = HttpHelper.INSTANCE.postGateway(uri, returnType); assertNotNull(result); assertEquals("pass", result.get("msg")); - result = HttpHelper.INSTANCE.postGateway(TEST_SENTINEL_PATH, returnType); + result = HttpHelper.INSTANCE.postGateway(uri, returnType); assertEquals("You have been restricted, please try again later!", result.get("message")); } @Test public void testFallbackUri() throws IOException { + String uri = "/http/test/sentinel/fallback"; String selectorAndRulesResult = - initSelectorAndRules(PluginEnum.SENTINEL.getName(), "", buildSelectorConditionList(), buildRuleLocalDataList(TEST_SENTINEL_FALLBACK_PATH)); + initSelectorAndRules(PluginEnum.SENTINEL.getName(), "", buildSelectorConditionList(), buildRuleLocalDataList(uri, TEST_SENTINEL_FALLBACK_PATH)); assertThat(selectorAndRulesResult, is("success")); Type returnType = new TypeToken>() { }.getType(); - Map result = HttpHelper.INSTANCE.postGateway(TEST_SENTINEL_PATH, returnType); + Map result = HttpHelper.INSTANCE.postGateway(uri, returnType); assertNotNull(result); assertEquals("pass", result.get("msg")); - ResultBean fallbackRet = HttpHelper.INSTANCE.postGateway(TEST_SENTINEL_PATH, ResultBean.class); + ResultBean fallbackRet = HttpHelper.INSTANCE.postGateway(uri, ResultBean.class); assertEquals(202, fallbackRet.getCode()); } @@ -95,7 +95,7 @@ private static List buildSelectorConditionList() { return Collections.singletonList(conditionData); } - private static List buildRuleLocalDataList(final String fallbackUri) { + private static List buildRuleLocalDataList(final String uri, final String fallbackUri) { final RuleLocalData ruleLocalData = new RuleLocalData(); SentinelHandle sentinelHandle = new SentinelHandle(); sentinelHandle.setDegradeRuleCount(1d); @@ -117,7 +117,7 @@ private static List buildRuleLocalDataList(final String fallbackU ConditionData conditionData = new ConditionData(); conditionData.setParamType(ParamTypeEnum.URI.getName()); conditionData.setOperator(OperatorEnum.EQ.getAlias()); - conditionData.setParamValue(TEST_SENTINEL_PATH); + conditionData.setParamValue(uri); ruleLocalData.setConditionDataList(Collections.singletonList(conditionData)); return Lists.newArrayList(ruleLocalData); From 3ce3c1143accaf53d6e23cc04874be814e8fecc7 Mon Sep 17 00:00:00 2001 From: eye-gu <734164350@qq.com> Date: Wed, 11 Mar 2026 18:13:27 +0800 Subject: [PATCH 4/7] test sequence execution --- .../http/combination/SentinelPluginTest.java | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java b/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java index 3e575b07f6ab..1bfcd00771bc 100644 --- a/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java +++ b/shenyu-integrated-test/shenyu-integrated-test-http/src/test/java/org/apache/shenyu/integrated/test/http/combination/SentinelPluginTest.java @@ -29,9 +29,12 @@ import org.apache.shenyu.integratedtest.common.helper.HttpHelper; import org.apache.shenyu.integratedtest.common.result.ResultBean; import org.apache.shenyu.web.controller.LocalPluginController.RuleLocalData; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; import java.io.IOException; import java.lang.reflect.Type; @@ -44,46 +47,48 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) public final class SentinelPluginTest extends AbstractPluginDataInit { + private static final String TEST_SENTINEL_PATH = "/http/test/sentinel/pass"; + private static final String TEST_SENTINEL_FALLBACK_PATH = "/http/test/request/accepted"; - @BeforeAll - public static void globalSetup() throws IOException { - cleanPluginData(PluginEnum.SENTINEL.getName()); + @BeforeEach + public void setup() throws IOException { String pluginResult = initPlugin(PluginEnum.SENTINEL.getName(), "{\"model\":\"black\"}"); assertThat(pluginResult, is("success")); } @Test + @Order(1) public void test() throws IOException { - String uri = "/http/test/sentinel/pass"; String selectorAndRulesResult = - initSelectorAndRules(PluginEnum.SENTINEL.getName(), "", buildSelectorConditionList(), buildRuleLocalDataList(uri, null)); + initSelectorAndRules(PluginEnum.SENTINEL.getName(), "", buildSelectorConditionList(), buildRuleLocalDataList(null)); assertThat(selectorAndRulesResult, is("success")); Type returnType = new TypeToken>() { }.getType(); - Map result = HttpHelper.INSTANCE.postGateway(uri, returnType); + Map result = HttpHelper.INSTANCE.postGateway(TEST_SENTINEL_PATH, returnType); assertNotNull(result); assertEquals("pass", result.get("msg")); - result = HttpHelper.INSTANCE.postGateway(uri, returnType); + result = HttpHelper.INSTANCE.postGateway(TEST_SENTINEL_PATH, returnType); assertEquals("You have been restricted, please try again later!", result.get("message")); } @Test + @Order(2) public void testFallbackUri() throws IOException { - String uri = "/http/test/sentinel/fallback"; String selectorAndRulesResult = - initSelectorAndRules(PluginEnum.SENTINEL.getName(), "", buildSelectorConditionList(), buildRuleLocalDataList(uri, TEST_SENTINEL_FALLBACK_PATH)); + initSelectorAndRules(PluginEnum.SENTINEL.getName(), "", buildSelectorConditionList(), buildRuleLocalDataList(TEST_SENTINEL_FALLBACK_PATH)); assertThat(selectorAndRulesResult, is("success")); Type returnType = new TypeToken>() { }.getType(); - Map result = HttpHelper.INSTANCE.postGateway(uri, returnType); + Map result = HttpHelper.INSTANCE.postGateway(TEST_SENTINEL_PATH, returnType); assertNotNull(result); assertEquals("pass", result.get("msg")); - ResultBean fallbackRet = HttpHelper.INSTANCE.postGateway(uri, ResultBean.class); + ResultBean fallbackRet = HttpHelper.INSTANCE.postGateway(TEST_SENTINEL_PATH, ResultBean.class); assertEquals(202, fallbackRet.getCode()); } @@ -95,7 +100,7 @@ private static List buildSelectorConditionList() { return Collections.singletonList(conditionData); } - private static List buildRuleLocalDataList(final String uri, final String fallbackUri) { + private static List buildRuleLocalDataList(final String fallbackUri) { final RuleLocalData ruleLocalData = new RuleLocalData(); SentinelHandle sentinelHandle = new SentinelHandle(); sentinelHandle.setDegradeRuleCount(1d); @@ -117,14 +122,14 @@ private static List buildRuleLocalDataList(final String uri, fina ConditionData conditionData = new ConditionData(); conditionData.setParamType(ParamTypeEnum.URI.getName()); conditionData.setOperator(OperatorEnum.EQ.getAlias()); - conditionData.setParamValue(uri); + conditionData.setParamValue(TEST_SENTINEL_PATH); ruleLocalData.setConditionDataList(Collections.singletonList(conditionData)); return Lists.newArrayList(ruleLocalData); } - @AfterAll - public static void clean() throws IOException { + @AfterEach + public void clean() throws IOException { cleanPluginData(PluginEnum.SENTINEL.getName()); } } From 23ba4008e5fd3d17e05ebb925a4c9726a3a1e39d Mon Sep 17 00:00:00 2001 From: eye-gu <734164350@qq.com> Date: Wed, 11 Mar 2026 19:04:27 +0800 Subject: [PATCH 5/7] fix jdk18 build --- shenyu-registry/shenyu-registry-eureka/pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/shenyu-registry/shenyu-registry-eureka/pom.xml b/shenyu-registry/shenyu-registry-eureka/pom.xml index 285ab81de649..75dcfcf4405d 100644 --- a/shenyu-registry/shenyu-registry-eureka/pom.xml +++ b/shenyu-registry/shenyu-registry-eureka/pom.xml @@ -43,4 +43,16 @@ 2.0.2 + + + + + org.apache.maven.plugins + maven-surefire-plugin + + -Dcom.netflix.servo.DefaultMonitorRegistry=false + + + + From 5310c6a92332d1d8d240322aacc237902b309588 Mon Sep 17 00:00:00 2001 From: eye-gu <734164350@qq.com> Date: Wed, 11 Mar 2026 19:29:54 +0800 Subject: [PATCH 6/7] exclude servo-core --- shenyu-registry/shenyu-registry-eureka/pom.xml | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/shenyu-registry/shenyu-registry-eureka/pom.xml b/shenyu-registry/shenyu-registry-eureka/pom.xml index 75dcfcf4405d..2300e1905425 100644 --- a/shenyu-registry/shenyu-registry-eureka/pom.xml +++ b/shenyu-registry/shenyu-registry-eureka/pom.xml @@ -35,6 +35,12 @@ com.netflix.eureka eureka-client + + + com.netflix.servo + servo-core + + @@ -43,16 +49,4 @@ 2.0.2 - - - - - org.apache.maven.plugins - maven-surefire-plugin - - -Dcom.netflix.servo.DefaultMonitorRegistry=false - - - - From aebc471150535151bf4c4977cb4eb461a79d7519 Mon Sep 17 00:00:00 2001 From: eye-gu <734164350@qq.com> Date: Wed, 11 Mar 2026 19:50:12 +0800 Subject: [PATCH 7/7] test upgrade servo-core version to 0.13.2 --- pom.xml | 7 +++++++ shenyu-registry/shenyu-registry-eureka/pom.xml | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/pom.xml b/pom.xml index d53ade0ddddf..079bb4b32792 100644 --- a/pom.xml +++ b/pom.xml @@ -157,6 +157,7 @@ 5.16.0 0.3.2-patch11 2.0.2 + 0.13.2 1.2 17.0.2 1.13.0 @@ -578,6 +579,12 @@ ${eureka.version} + + com.netflix.servo + servo-core + ${servo-core.version} + + io.kubernetes client-java-spring-integration diff --git a/shenyu-registry/shenyu-registry-eureka/pom.xml b/shenyu-registry/shenyu-registry-eureka/pom.xml index 2300e1905425..878714abe45b 100644 --- a/shenyu-registry/shenyu-registry-eureka/pom.xml +++ b/shenyu-registry/shenyu-registry-eureka/pom.xml @@ -42,6 +42,11 @@ + + + com.netflix.servo + servo-core + com.netflix.eureka