This is an automated email from the ASF dual-hosted git repository.
xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 35dad91 refactor shenyu-admin: code polish. (#2349)
35dad91 is described below
commit 35dad91a4e67c97f11b336b2f963f9217053a6a4
Author: midnight2104 <[email protected]>
AuthorDate: Fri Nov 12 14:38:22 2021 +0800
refactor shenyu-admin: code polish. (#2349)
* refactor shenyu-common: code polish
* refactor shenyu-common: code polish
* refactor shenyu-data-sync-center: code polish
* refactor shenyu-data-sync-center: code polish
* refactor shenyu-admin: code polish
---
.../admin/service/impl/AppAuthServiceImpl.java | 5 ++
.../service/impl/DashboardUserServiceImpl.java | 8 +-
.../shenyu/admin/service/impl/EnumServiceImpl.java | 3 +
.../admin/service/impl/MetaDataServiceImpl.java | 15 ++--
.../admin/service/impl/PermissionServiceImpl.java | 45 ++++++-----
.../admin/service/impl/PluginServiceImpl.java | 26 +++++--
.../admin/service/impl/ResourceServiceImpl.java | 36 +++++----
.../shenyu/admin/service/impl/RoleServiceImpl.java | 46 +++++++----
.../shenyu/admin/service/impl/RuleServiceImpl.java | 17 ++--
.../admin/service/impl/ShenyuDictServiceImpl.java | 3 +-
.../admin/service/impl/SyncDataServiceImpl.java | 27 +++++--
.../admin/service/impl/UpstreamCheckService.java | 91 ++++++++++++----------
.../admin/shiro/bean/StatelessAuthFilter.java | 7 +-
.../shenyu/admin/shiro/config/ShiroRealm.java | 3 +-
.../shenyu/admin/utils/ShenyuResultMessage.java | 2 -
15 files changed, 208 insertions(+), 126 deletions(-)
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 8b9cfdc..1aa859d 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
@@ -169,6 +169,7 @@ public class AppAuthServiceImpl implements AppAuthService {
List<AuthParamDTO> authParamDTOList = appAuthDTO.getAuthParamDTOList();
if (CollectionUtils.isNotEmpty(authParamDTOList)) {
authParamMapper.deleteByAuthId(appAuthDTO.getId());
+
List<AuthParamDO> authParamDOList = authParamDTOList.stream()
.map(dto -> AuthParamDO.create(appAuthDTO.getId(),
dto.getAppName(), dto.getAppParam()))
.collect(Collectors.toList());
@@ -179,13 +180,16 @@ public class AppAuthServiceImpl implements AppAuthService
{
List<AuthPathDO> oldAuthPathDOList =
authPathMapper.findByAuthId(appAuthDTO.getId());
String appName = oldAuthPathDOList.stream().findFirst()
.map(AuthPathDO::getAppName).orElse(StringUtils.EMPTY);
+
authPathMapper.deleteByAuthId(appAuthDTO.getId());
+
List<AuthPathDO> authPathDOList = authPathDTOList.stream()
.filter(Objects::nonNull)
.map(dto -> AuthPathDO.create(dto.getPath(),
appAuthDTO.getId(), appName))
.collect(Collectors.toList());
authPathMapper.batchSave(authPathDOList);
}
+
AppAuthData appAuthData = buildByEntity(appAuthDO);
eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.APP_AUTH,
DataEventTypeEnum.UPDATE,
@@ -202,6 +206,7 @@ public class AppAuthServiceImpl implements AppAuthService {
List<AuthPathDTO> authPathDTOList =
authPathWarpDTO.getAuthPathDTOList();
if (CollectionUtils.isNotEmpty(authPathDTOList)) {
authPathMapper.deleteByAuthId(authPathWarpDTO.getId());
+
List<AuthPathDO> collect = authPathDTOList.stream()
.filter(Objects::nonNull)
.map(authPathDTO ->
AuthPathDO.create(authPathDTO.getPath(), appAuthDO.getId(),
authPathDTO.getAppName()))
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 d47038b..37f2eb8 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
@@ -116,12 +116,15 @@ public class DashboardUserServiceImpl implements
DashboardUserService {
bindUserRole(dashboardUserDO.getId(), dashboardUserDTO.getRoles());
return dashboardUserMapper.insertSelective(dashboardUserDO);
}
+
if (!AdminConstants.ADMIN_NAME.equals(dashboardUserDTO.getUserName()))
{
userRoleMapper.deleteByUserId(dashboardUserDTO.getId());
}
+
if (CollectionUtils.isNotEmpty(dashboardUserDTO.getRoles())) {
bindUserRole(dashboardUserDTO.getId(),
dashboardUserDTO.getRoles());
}
+
return dashboardUserMapper.updateSelective(dashboardUserDO);
}
@@ -213,9 +216,11 @@ public class DashboardUserServiceImpl implements
DashboardUserService {
if (Objects.nonNull(ldapTemplate)) {
dashboardUserVO = loginByLdap(userName, password);
}
+
if (Objects.isNull(dashboardUserVO)) {
dashboardUserVO = loginByDatabase(userName, password);
}
+
return LoginDashboardUserVO.buildLoginDashboardUserVO(dashboardUserVO)
.setToken(JwtUtils.generateToken(dashboardUserVO.getUserName(),
dashboardUserVO.getPassword(),
jwtProperties.getExpiredSeconds()));
@@ -256,8 +261,7 @@ public class DashboardUserServiceImpl implements
DashboardUserService {
private DashboardUserVO loginByDatabase(final String userName, final
String password) {
String key = secretProperties.getKey();
String iv = secretProperties.getIv();
- DashboardUserVO dashboardUserVO = findByQuery(userName,
AesUtils.aesEncryption(password, key, iv));
- return dashboardUserVO;
+ return findByQuery(userName, AesUtils.aesEncryption(password, key,
iv));
}
/**
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/EnumServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/EnumServiceImpl.java
index 2189a61..e82ddc5 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/EnumServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/EnumServiceImpl.java
@@ -100,9 +100,11 @@ public class EnumServiceImpl implements EnumService {
List<EnumVO> redisModeEnums = Arrays.stream(RedisModeEnum.values())
.map(redisModeEnum -> new EnumVO(null,
redisModeEnum.getName(), true))
.collect(Collectors.toList());
+
List<EnumVO> hystrixIsolationModeEnums =
Arrays.stream(HystrixIsolationModeEnum.values())
.map(hystrixIsolationModeEnum -> new
EnumVO(hystrixIsolationModeEnum.getCode(), hystrixIsolationModeEnum.getName(),
true))
.collect(Collectors.toList());
+
Map<String, List<EnumVO>> enums = Maps.newHashMap();
enums.put("httpMethodEnums", httpMethodEnums);
enums.put("loadBalanceEnums", loadBalanceEnums);
@@ -117,6 +119,7 @@ public class EnumServiceImpl implements EnumService {
enums.put("wafEnums", wafEnums);
enums.put("redisModeEnums", redisModeEnums);
enums.put("hystrixIsolationModeEnums", hystrixIsolationModeEnums);
+
return enums;
}
}
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 a6221be..cf48d3f 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
@@ -97,7 +97,7 @@ public class MetaDataServiceImpl implements MetaDataService {
}
MetaDataDO metaDataDO =
MetaDataTransfer.INSTANCE.mapToEntity(metaDataDTO);
DataEventTypeEnum eventType;
- String pathDesc = metaDataDO.getPathDesc() == null ? "" :
metaDataDO.getPathDesc();
+ String pathDesc = Objects.isNull(metaDataDO.getPathDesc()) ? "" :
metaDataDO.getPathDesc();
if (StringUtils.isEmpty(metaDataDTO.getId())) {
Timestamp currentTime = new Timestamp(System.currentTimeMillis());
metaDataDO.setId(UUIDUtils.getInstance().generateShortUuid());
@@ -168,11 +168,10 @@ public class MetaDataServiceImpl implements
MetaDataService {
@Override
@Pageable
public CommonPager<MetaDataVO> listByPage(final MetaDataQuery
metaDataQuery) {
- return PageResultUtils.result(metaDataQuery.getPageParameter(),
- () -> metaDataMapper.selectByQuery(metaDataQuery)
- .stream()
- .map(MetaDataTransfer.INSTANCE::mapToVO)
- .collect(Collectors.toList()));
+ return PageResultUtils.result(metaDataQuery.getPageParameter(), () ->
metaDataMapper.selectByQuery(metaDataQuery)
+ .stream()
+ .map(MetaDataTransfer.INSTANCE::mapToVO)
+ .collect(Collectors.toList()));
}
@Override
@@ -216,10 +215,12 @@ public class MetaDataServiceImpl implements
MetaDataService {
LOG.error("metaData create param is error, {}", metaDataDTO);
return AdminConstants.PARAMS_ERROR;
}
+
final MetaDataDO exist =
metaDataMapper.findByPath(metaDataDTO.getPath());
- if (exist != null && !exist.getId().equals(metaDataDTO.getId())) {
+ if (Objects.nonNull(exist) &&
!exist.getId().equals(metaDataDTO.getId())) {
return AdminConstants.DATA_PATH_IS_EXIST;
}
+
return StringUtils.EMPTY;
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PermissionServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PermissionServiceImpl.java
index 74e6814..30e45c9 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PermissionServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PermissionServiceImpl.java
@@ -80,21 +80,24 @@ public class PermissionServiceImpl implements
PermissionService {
@Override
public PermissionMenuVO getPermissionMenu(final String token) {
UserInfo userInfo = JwtUtils.getUserInfo();
- if (Objects.nonNull(userInfo)) {
- List<ResourceVO> resourceVOList =
getResourceListByUserName(userInfo.getUserName());
- if (CollectionUtils.isNotEmpty(resourceVOList)) {
- List<MenuInfo> menuInfoList = new ArrayList<>();
- resourceService.getMenuInfo(menuInfoList, resourceVOList,
null);
- return new PermissionMenuVO(menuInfoList,
getAuthPerm(resourceVOList), getAllAuthPerms());
- }
+ if (Objects.isNull(userInfo)) {
+ return null;
}
- return null;
+
+ List<ResourceVO> resourceVOList =
getResourceListByUserName(userInfo.getUserName());
+ if (CollectionUtils.isEmpty(resourceVOList)) {
+ return null;
+ }
+
+ List<MenuInfo> menuInfoList = new ArrayList<>();
+ resourceService.getMenuInfo(menuInfoList, resourceVOList, null);
+ return new PermissionMenuVO(menuInfoList, getAuthPerm(resourceVOList),
getAllAuthPerms());
}
/**
- * get Auth perm by user name for shiro.
+ * get Auth perm by username for shiro.
*
- * @param userName user name.
+ * @param userName username.
* @return {@linkplain Set}
*/
@Override
@@ -109,7 +112,7 @@ public class PermissionServiceImpl implements
PermissionService {
/**
* get resource by username.
*
- * @param userName user name
+ * @param userName username
* @return {@linkplain List}
*/
private List<ResourceVO> getResourceListByUserName(final String userName) {
@@ -117,17 +120,20 @@ public class PermissionServiceImpl implements
PermissionService {
List<String> roleIds = userRoleDOList.stream().filter(Objects::nonNull)
.map(UserRoleDO::getRoleId)
.collect(Collectors.toList());
+
Set<String> resourceIds =
permissionMapper.findByObjectIds(roleIds).stream()
.map(PermissionDO::getResourceId)
.filter(StringUtils::isNoneBlank)
.collect(Collectors.toSet());
- if (CollectionUtils.isNotEmpty(resourceIds)) {
- return new ArrayList<>(resourceIds).stream()
- .map(resource ->
ResourceVO.buildResourceVO(resourceMapper.selectById(resource)))
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
+
+ if (CollectionUtils.isEmpty(resourceIds)) {
+ return Collections.emptyList();
}
- return Collections.emptyList();
+
+ return new ArrayList<>(resourceIds).stream()
+ .map(resource ->
ResourceVO.buildResourceVO(resourceMapper.selectById(resource)))
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
}
/**
@@ -150,7 +156,8 @@ public class PermissionServiceImpl implements
PermissionService {
*/
private List<AuthPerm> getAllAuthPerms() {
return resourceMapper.selectAll().stream()
- .filter(item ->
item.getResourceType().equals(ResourceTypeConstants.MENU_TYPE_2))
- .map(item ->
AuthPerm.buildAuthPerm(ResourceVO.buildResourceVO(item))).collect(Collectors.toList());
+ .filter(item ->
item.getResourceType().equals(ResourceTypeConstants.MENU_TYPE_2))
+ .map(item ->
AuthPerm.buildAuthPerm(ResourceVO.buildResourceVO(item)))
+ .collect(Collectors.toList());
}
}
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 7130615..2c04d2f 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
@@ -112,6 +112,7 @@ public class PluginServiceImpl implements PluginService {
if (StringUtils.isNoneBlank(msg)) {
return msg;
}
+
PluginDO pluginDO = PluginDO.buildPluginDO(pluginDTO);
DataEventTypeEnum eventType = DataEventTypeEnum.CREATE;
if (StringUtils.isBlank(pluginDTO.getId())) {
@@ -137,6 +138,7 @@ public class PluginServiceImpl implements PluginService {
@Override
@Transactional(rollbackFor = Exception.class)
public String delete(final List<String> ids) {
+ // 1. select plugin id.
List<PluginDO> plugins =
Optional.ofNullable(this.pluginMapper.selectByIds(ids))
.orElse(Collections.emptyList());
final List<String> pluginIds = plugins.stream()
@@ -144,11 +146,13 @@ public class PluginServiceImpl implements PluginService {
if (CollectionUtils.isEmpty(pluginIds)) {
return AdminConstants.SYS_PLUGIN_ID_NOT_EXIST;
}
- // delete plugins
+
+ // 2. delete plugins.
this.pluginMapper.deleteByIds(pluginIds);
- // delete plugin handle
+ // 3. delete plugin handle.
this.pluginHandleMapper.deleteByPluginIds(pluginIds);
- // all selectors
+
+ // 4. all selectors.
final List<String> selectorIds =
Optional.ofNullable(this.selectorMapper.findByPluginIds(pluginIds))
.orElse(Collections.emptyList())
.stream().map(SelectorDO::getId).collect(Collectors.toList());
@@ -159,20 +163,25 @@ public class PluginServiceImpl implements PluginService {
this.selectorConditionMapper.deleteBySelectorIds(selectorIds);
// delete all rules
final List<String> ruleIds =
Optional.ofNullable(this.ruleMapper.findBySelectorIds(selectorIds))
-
.orElse(Collections.emptyList()).stream().map(RuleDO::getId).collect(Collectors.toList());
+ .orElse(Collections.emptyList())
+ .stream()
+ .map(RuleDO::getId)
+ .collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(ruleIds)) {
this.ruleMapper.deleteByIds(ruleIds);
// delete all rule conditions
this.ruleConditionMapper.deleteByRuleIds(ruleIds);
}
}
- // delete resource & permission
+
+ // 5. delete resource & permission.
final List<ResourceVO> resources =
this.resourceService.listByTitles(plugins.stream()
.map(PluginDO::getName).collect(Collectors.toList()));
if (CollectionUtils.isNotEmpty(resources)) {
this.resourceService.delete(resources.stream().map(ResourceVO::getId).collect(Collectors.toList()));
}
- // publish change event.
+
+ // 6. publish change event.
eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.PLUGIN, DataEventTypeEnum.DELETE,
plugins.stream().map(PluginTransfer.INSTANCE::mapToData).collect(Collectors.toList())));
return StringUtils.EMPTY;
@@ -198,6 +207,7 @@ public class PluginServiceImpl implements PluginService {
pluginMapper.updateEnable(pluginDO);
plugins.add(pluginDO);
}
+
// publish change event.
if (CollectionUtils.isNotEmpty(plugins)) {
eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.PLUGIN, DataEventTypeEnum.UPDATE,
@@ -248,7 +258,7 @@ public class PluginServiceImpl implements PluginService {
Objects.requireNonNull(pluginDO);
return pluginDO.getId();
}
-
+
/**
* Find by name plugin do.
*
@@ -259,7 +269,7 @@ public class PluginServiceImpl implements PluginService {
public PluginDO findByName(final String name) {
return pluginMapper.selectByName(name);
}
-
+
/**
* check plugin Data integrity.
*
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 c7f240b..93e4727 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
@@ -56,7 +56,8 @@ public class ResourceServiceImpl implements ResourceService {
private final PermissionMapper permissionMapper;
- public ResourceServiceImpl(final ResourceMapper resourceMapper, final
PermissionMapper permissionMapper) {
+ public ResourceServiceImpl(final ResourceMapper resourceMapper,
+ final PermissionMapper permissionMapper) {
this.resourceMapper = resourceMapper;
this.permissionMapper = permissionMapper;
}
@@ -72,7 +73,7 @@ public class ResourceServiceImpl implements ResourceService {
}
/**
- * create or update resource.
+ * create or update resource.
*
* @param resourceDTO {@linkplain ResourceDTO}
* @return rows int
@@ -152,11 +153,10 @@ public class ResourceServiceImpl implements
ResourceService {
@Override
@Pageable
public CommonPager<ResourceVO> listByPage(final ResourceQuery
resourceQuery) {
- return PageResultUtils.result(resourceQuery.getPageParameter(),
- () -> resourceMapper.selectByQuery(resourceQuery)
- .stream()
- .map(ResourceVO::buildResourceVO)
- .collect(Collectors.toList()));
+ return PageResultUtils.result(resourceQuery.getPageParameter(), () ->
resourceMapper.selectByQuery(resourceQuery)
+ .stream()
+ .map(ResourceVO::buildResourceVO)
+ .collect(Collectors.toList()));
}
/**
@@ -167,12 +167,13 @@ public class ResourceServiceImpl implements
ResourceService {
@Override
public List<MenuInfo> getMenuTree() {
List<ResourceVO> resourceVOList =
resourceMapper.selectAll().stream().map(ResourceVO::buildResourceVO).collect(Collectors.toList());
- if (CollectionUtils.isNotEmpty(resourceVOList)) {
- List<MenuInfo> menuInfoList = new ArrayList<>();
- getMenuInfo(menuInfoList, resourceVOList, null);
- return menuInfoList;
+ if (CollectionUtils.isEmpty(resourceVOList)) {
+ return null;
}
- return null;
+
+ List<MenuInfo> menuInfoList = new ArrayList<>();
+ getMenuInfo(menuInfoList, resourceVOList, null);
+ return menuInfoList;
}
/**
@@ -192,17 +193,20 @@ public class ResourceServiceImpl implements
ResourceService {
* get Menu Info.
*
* @param menuInfoList {@linkplain List} menu info.
- * @param metaList {@linkplain List} resource list
- * @param menuInfo {@linkplain MenuInfo}
+ * @param metaList {@linkplain List} resource list
+ * @param menuInfo {@linkplain MenuInfo}
*/
@Override
- public void getMenuInfo(final List<MenuInfo> menuInfoList, final
List<ResourceVO> metaList, final MenuInfo menuInfo) {
+ public void getMenuInfo(final List<MenuInfo> menuInfoList,
+ final List<ResourceVO> metaList,
+ final MenuInfo menuInfo) {
for (ResourceVO resourceVO : metaList) {
String parentId = resourceVO.getParentId();
MenuInfo tempMenuInfo = MenuInfo.buildMenuInfo(resourceVO);
if (ObjectUtils.isEmpty(tempMenuInfo)) {
continue;
}
+
if (ObjectUtils.isEmpty(menuInfo) &&
reactor.util.StringUtils.isEmpty(parentId)) {
menuInfoList.add(tempMenuInfo);
if (Objects.equals(resourceVO.getIsLeaf(), Boolean.FALSE)) {
@@ -221,7 +225,7 @@ public class ResourceServiceImpl implements ResourceService
{
* get delete resource ids.
*
* @param resourceIds resource ids
- * @param metaList all resource object
+ * @param metaList all resource object
*/
private void getDeleteResourceIds(final Map<String, String>
deleteResourceIds, final List<String> resourceIds,
final List<ResourceVO> metaList) {
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 8bc328a..4158a3d 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
@@ -60,7 +60,9 @@ public class RoleServiceImpl implements RoleService {
private final ResourceMapper resourceMapper;
- public RoleServiceImpl(final RoleMapper roleMapper, final PermissionMapper
permissionMapper, final ResourceMapper resourceMapper) {
+ public RoleServiceImpl(final RoleMapper roleMapper,
+ final PermissionMapper permissionMapper,
+ final ResourceMapper resourceMapper) {
this.roleMapper = roleMapper;
this.permissionMapper = permissionMapper;
this.resourceMapper = resourceMapper;
@@ -105,8 +107,9 @@ public class RoleServiceImpl implements RoleService {
@Override
public RoleEditVO findById(final String id) {
RoleVO sysRole = RoleVO.buildRoleVO(roleMapper.selectById(id));
- return Optional.ofNullable(sysRole).map(item -> new
RoleEditVO(getPermissionIdsByRoleId(item.getId()), item,
- getAllPermissions())).orElse(null);
+ return Optional.ofNullable(sysRole)
+ .map(item -> new
RoleEditVO(getPermissionIdsByRoleId(item.getId()), item, getAllPermissions()))
+ .orElse(null);
}
/**
@@ -129,8 +132,10 @@ public class RoleServiceImpl implements RoleService {
@Override
@Pageable
public CommonPager<RoleVO> listByPage(final RoleQuery roleQuery) {
- return PageResultUtils.result(roleQuery.getPageParameter(),
- () ->
roleMapper.selectByQuery(roleQuery).stream().map(RoleVO::buildRoleVO).collect(Collectors.toList()));
+ return PageResultUtils.result(roleQuery.getPageParameter(), () ->
roleMapper.selectByQuery(roleQuery)
+ .stream()
+ .map(RoleVO::buildRoleVO)
+ .collect(Collectors.toList()));
}
/**
@@ -140,7 +145,10 @@ public class RoleServiceImpl implements RoleService {
*/
@Override
public List<RoleVO> selectAll() {
- return
roleMapper.selectAll().stream().map(RoleVO::buildRoleVO).collect(Collectors.toList());
+ return roleMapper.selectAll()
+ .stream()
+ .map(RoleVO::buildRoleVO)
+ .collect(Collectors.toList());
}
/**
@@ -149,8 +157,12 @@ public class RoleServiceImpl implements RoleService {
* @return {@linkplain PermissionInfo}
*/
private PermissionInfo getAllPermissions() {
- List<ResourceVO> resourceVOList =
resourceMapper.selectAll().stream().map(ResourceVO::buildResourceVO).collect(Collectors.toList());
+ List<ResourceVO> resourceVOList = resourceMapper.selectAll()
+ .stream()
+ .map(ResourceVO::buildResourceVO)
+ .collect(Collectors.toList());
List<String> permissionIds =
resourceVOList.stream().map(ResourceVO::getId).collect(Collectors.toList());
+
List<ResourceInfo> treeList = new ArrayList<>();
getTreeModelList(treeList, resourceVOList, null);
return
PermissionInfo.builder().treeList(treeList).permissionIds(permissionIds).build();
@@ -163,17 +175,22 @@ public class RoleServiceImpl implements RoleService {
* @return {@linkplain List}
*/
private List<String> getPermissionIdsByRoleId(final String roleId) {
- return
permissionMapper.findByObjectId(roleId).stream().map(PermissionDO::getResourceId).collect(Collectors.toList());
+ return permissionMapper.findByObjectId(roleId)
+ .stream()
+ .map(PermissionDO::getResourceId)
+ .collect(Collectors.toList());
}
/**
* get menu list.
*
- * @param treeList {@linkplain ResourceInfo}
- * @param metaList {@linkplain ResourceDTO}
+ * @param treeList {@linkplain ResourceInfo}
+ * @param metaList {@linkplain ResourceDTO}
* @param resourceInfo {@linkplain ResourceInfo}
*/
- private void getTreeModelList(final List<ResourceInfo> treeList, final
List<ResourceVO> metaList, final ResourceInfo resourceInfo) {
+ private void getTreeModelList(final List<ResourceInfo> treeList,
+ final List<ResourceVO> metaList,
+ final ResourceInfo resourceInfo) {
for (ResourceVO resourceVO : metaList) {
String parentId = resourceVO.getParentId();
ResourceInfo resourceInfoItem =
ResourceInfo.buildResourceInfo(resourceVO);
@@ -195,7 +212,7 @@ public class RoleServiceImpl implements RoleService {
/**
* get two list different.
*
- * @param preList {@linkplain List}
+ * @param preList {@linkplain List}
* @param lastList {@linkplain List}
* @return {@linkplain List}
*/
@@ -203,9 +220,11 @@ public class RoleServiceImpl implements RoleService {
if (CollectionUtils.isEmpty(lastList)) {
return null;
}
+
if (CollectionUtils.isEmpty(preList)) {
return lastList;
}
+
Map<String, Integer> map = preList.stream().distinct()
.collect(Collectors.toMap(source -> source, source -> 1));
return lastList.stream().filter(item ->
!map.containsKey(item)).collect(Collectors.toList());
@@ -232,7 +251,7 @@ public class RoleServiceImpl implements RoleService {
/**
* manger role permission.
*
- * @param roleId role id.
+ * @param roleId role id.
* @param currentPermissionList {@linkplain List} current role permission
ids
*/
private void manageRolePermission(final String roleId, final List<String>
currentPermissionList) {
@@ -241,6 +260,7 @@ public class RoleServiceImpl implements RoleService {
if (CollectionUtils.isNotEmpty(addPermission)) {
batchSavePermission(addPermission.stream().map(node ->
PermissionDO.buildPermissionDO(PermissionDTO.builder().objectId(roleId).resourceId(node).build())).collect(Collectors.toList()));
}
+
List<String> deletePermission = getListDiff(currentPermissionList,
lastPermissionList);
if (CollectionUtils.isNotEmpty(deletePermission)) {
deletePermission.forEach(node -> deleteByObjectIdAndResourceId(new
PermissionQuery(roleId, node)));
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 b174cbd..6220b21 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
@@ -95,6 +95,7 @@ public class RuleServiceImpl implements RuleService {
if (Objects.nonNull(exist)) {
return "";
}
+
RuleDO ruleDO = RuleDO.buildRuleDO(ruleDTO);
List<RuleConditionDTO> ruleConditions = ruleDTO.getRuleConditions();
if (StringUtils.isEmpty(ruleDTO.getId())) {
@@ -236,21 +237,23 @@ public class RuleServiceImpl implements RuleService {
}
private RuleData buildRuleData(final RuleDO ruleDO) {
- // query for conditions
- List<ConditionData> conditions = ruleConditionMapper.selectByQuery(
- new RuleConditionQuery(ruleDO.getId()))
- .stream()
- .filter(Objects::nonNull)
- .map(ConditionTransfer.INSTANCE::mapToRuleDO)
- .collect(Collectors.toList());
SelectorDO selectorDO =
selectorMapper.selectById(ruleDO.getSelectorId());
if (Objects.isNull(selectorDO)) {
return null;
}
+
PluginDO pluginDO = pluginMapper.selectById(selectorDO.getPluginId());
if (Objects.isNull(pluginDO)) {
return null;
}
+
+ // query for conditions
+ List<ConditionData> conditions = ruleConditionMapper.selectByQuery(
+ new RuleConditionQuery(ruleDO.getId()))
+ .stream()
+ .filter(Objects::nonNull)
+ .map(ConditionTransfer.INSTANCE::mapToRuleDO)
+ .collect(Collectors.toList());
return RuleDO.transFrom(ruleDO, pluginDO.getName(), conditions);
}
}
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 fdb3897..2f9b33b 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.admin.service.impl;
+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.mapper.ShenyuDictMapper;
@@ -79,7 +80,7 @@ public class ShenyuDictServiceImpl implements
ShenyuDictService {
@Override
public Integer enabled(final List<String> ids, final Boolean enabled) {
- if (ids == null || ids.isEmpty()) {
+ if (CollectionUtils.isEmpty(ids)) {
return 0;
}
return shenyuDictMapper.enabled(ids, enabled);
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SyncDataServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SyncDataServiceImpl.java
index 2322737..0ac8860 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SyncDataServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SyncDataServiceImpl.java
@@ -83,13 +83,18 @@ public class SyncDataServiceImpl implements SyncDataService
{
@Override
public boolean syncAll(final DataEventTypeEnum type) {
appAuthService.syncData();
+
List<PluginData> pluginDataList = pluginService.listAll();
eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.PLUGIN, type, pluginDataList));
+
List<SelectorData> selectorDataList = selectorService.listAll();
eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.SELECTOR, type, selectorDataList));
+
List<RuleData> ruleDataList = ruleService.listAll();
eventPublisher.publishEvent(new DataChangedEvent(ConfigGroupEnum.RULE,
type, ruleDataList));
+
metaDataService.syncData();
+
return true;
}
@@ -98,16 +103,22 @@ public class SyncDataServiceImpl implements
SyncDataService {
PluginVO pluginVO = pluginService.findById(pluginId);
eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.PLUGIN, DataEventTypeEnum.UPDATE,
Collections.singletonList(PluginTransfer.INSTANCE.mapDataTOVO(pluginVO))));
+
List<SelectorData> selectorDataList =
selectorService.findByPluginId(pluginId);
- if (CollectionUtils.isNotEmpty(selectorDataList)) {
- eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.SELECTOR, DataEventTypeEnum.REFRESH,
selectorDataList));
- List<RuleData> allRuleDataList = new ArrayList<>();
- for (SelectorData selectData : selectorDataList) {
- List<RuleData> ruleDataList =
ruleService.findBySelectorId(selectData.getId());
- allRuleDataList.addAll(ruleDataList);
- }
- eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.RULE, DataEventTypeEnum.REFRESH,
allRuleDataList));
+ if (CollectionUtils.isEmpty(selectorDataList)) {
+ return true;
}
+
+ eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.SELECTOR, DataEventTypeEnum.REFRESH,
selectorDataList));
+
+ List<RuleData> allRuleDataList = new ArrayList<>();
+ for (SelectorData selectData : selectorDataList) {
+ List<RuleData> ruleDataList =
ruleService.findBySelectorId(selectData.getId());
+ allRuleDataList.addAll(ruleDataList);
+ }
+
+ eventPublisher.publishEvent(new DataChangedEvent(ConfigGroupEnum.RULE,
DataEventTypeEnum.REFRESH, allRuleDataList));
+
return true;
}
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/UpstreamCheckService.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/UpstreamCheckService.java
index 980fe67..197470c 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/UpstreamCheckService.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/UpstreamCheckService.java
@@ -73,6 +73,8 @@ public class UpstreamCheckService {
private static final Set<ZombieUpstream> ZOMBIE_SET =
Sets.newConcurrentHashSet();
+ private static final String REGISTER_TYPE_HTTP = "http";
+
private final int zombieCheckTimes;
private final int scheduledTime;
@@ -88,25 +90,27 @@ public class UpstreamCheckService {
private final PluginMapper pluginMapper;
private final SelectorConditionMapper selectorConditionMapper;
-
+
private final SelectorHandleConverterFactor converterFactor;
private ScheduledThreadPoolExecutor executor;
private ScheduledFuture<?> scheduledFuture;
-
+
/**
* Instantiates a new Upstream check service.
*
- * @param selectorMapper the selector mapper
- * @param eventPublisher the event publisher
- * @param pluginMapper the plugin mapper
- * @param selectorConditionMapper the selectorCondition mapper
+ * @param selectorMapper the selector mapper
+ * @param eventPublisher the event publisher
+ * @param pluginMapper the plugin mapper
+ * @param selectorConditionMapper the selectorCondition mapper
* @param shenyuRegisterCenterConfig the shenyu register center config
- * @param converterFactor the converter factor
+ * @param converterFactor the converter factor
*/
- public UpstreamCheckService(final SelectorMapper selectorMapper, final
ApplicationEventPublisher eventPublisher,
- final PluginMapper pluginMapper, final
SelectorConditionMapper selectorConditionMapper,
+ public UpstreamCheckService(final SelectorMapper selectorMapper,
+ final ApplicationEventPublisher eventPublisher,
+ final PluginMapper pluginMapper,
+ final SelectorConditionMapper
selectorConditionMapper,
final ShenyuRegisterCenterConfig
shenyuRegisterCenterConfig,
final SelectorHandleConverterFactor
converterFactor) {
this.selectorMapper = selectorMapper;
@@ -123,7 +127,7 @@ public class UpstreamCheckService {
setup();
}
}
-
+
/**
* Set up.
*/
@@ -134,24 +138,27 @@ public class UpstreamCheckService {
scheduledFuture = executor.scheduleWithFixedDelay(this::scheduled,
10, scheduledTime, TimeUnit.SECONDS);
}
}
-
+
/**
* Close relative resource on container destroy.
*/
@PreDestroy
public void close() {
- if (Objects.nonNull(scheduledFuture)) {
- scheduledFuture.cancel(false);
- executor.shutdownNow();
- try {
- executor.awaitTermination(5, TimeUnit.SECONDS);
- } catch (InterruptedException ex) {
- LOG.error("shutdown executor error", ex);
- Thread.currentThread().interrupt();
- }
+ if (Objects.isNull(scheduledFuture)) {
+ return;
}
+
+ scheduledFuture.cancel(false);
+ executor.shutdownNow();
+ try {
+ executor.awaitTermination(5, TimeUnit.SECONDS);
+ } catch (InterruptedException ex) {
+ LOG.error("shutdown executor error", ex);
+ Thread.currentThread().interrupt();
+ }
+
}
-
+
/**
* Remove by key.
*
@@ -160,17 +167,18 @@ public class UpstreamCheckService {
public static void removeByKey(final String selectorName) {
UPSTREAM_MAP.remove(selectorName);
}
-
+
/**
* Submit.
*
- * @param selectorId the selector id
+ * @param selectorId the selector id
* @param commonUpstream the common upstream
*/
public void submit(final String selectorId, final CommonUpstream
commonUpstream) {
if (!Constants.DEFAULT_REGISTER_TYPE.equalsIgnoreCase(registerType)) {
return;
}
+
if (UPSTREAM_MAP.containsKey(selectorId)) {
List<CommonUpstream> upstreams =
UPSTREAM_MAP.getOrDefault(selectorId, Collections.emptyList());
Optional<CommonUpstream> exists = upstreams.stream().filter(item
-> StringUtils.isNotBlank(item.getUpstreamUrl())
@@ -184,15 +192,15 @@ public class UpstreamCheckService {
UPSTREAM_MAP.put(selectorId, Lists.newArrayList(commonUpstream));
}
}
-
+
/**
* Replace.
*
- * @param selectorId the selector name
+ * @param selectorId the selector name
* @param commonUpstreams the common upstream list
*/
public void replace(final String selectorId, final List<CommonUpstream>
commonUpstreams) {
- if (!"http".equalsIgnoreCase(registerType)) {
+ if (!REGISTER_TYPE_HTTP.equalsIgnoreCase(registerType)) {
return;
}
UPSTREAM_MAP.put(selectorId, commonUpstreams);
@@ -268,20 +276,25 @@ public class UpstreamCheckService {
private void updateSelectorHandler(final String selectorId, final
List<CommonUpstream> aliveList) {
SelectorDO selectorDO = selectorMapper.selectById(selectorId);
- if (Objects.nonNull(selectorDO)) {
- PluginDO pluginDO =
pluginMapper.selectById(selectorDO.getPluginId());
- String handler =
converterFactor.newInstance(pluginDO.getName()).handler(selectorDO.getHandle(),
aliveList);
- selectorDO.setHandle(handler);
- selectorMapper.updateSelective(selectorDO);
- List<ConditionData> conditionDataList =
ConditionTransfer.INSTANCE.mapToSelectorDOS(
- selectorConditionMapper.selectByQuery(new
SelectorConditionQuery(selectorDO.getId())));
- SelectorData selectorData = SelectorDO.transFrom(selectorDO,
pluginDO.getName(), conditionDataList);
- selectorData.setHandle(handler);
- // publish change event.
- eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.SELECTOR, DataEventTypeEnum.UPDATE,
Collections.singletonList(selectorData)));
+ if (Objects.isNull(selectorDO)) {
+ return;
}
+
+ PluginDO pluginDO = pluginMapper.selectById(selectorDO.getPluginId());
+ String handler =
converterFactor.newInstance(pluginDO.getName()).handler(selectorDO.getHandle(),
aliveList);
+ selectorDO.setHandle(handler);
+ selectorMapper.updateSelective(selectorDO);
+
+ List<ConditionData> conditionDataList =
ConditionTransfer.INSTANCE.mapToSelectorDOS(
+ selectorConditionMapper.selectByQuery(new
SelectorConditionQuery(selectorDO.getId())));
+ SelectorData selectorData = SelectorDO.transFrom(selectorDO,
pluginDO.getName(), conditionDataList);
+ selectorData.setHandle(handler);
+
+ // publish change event.
+ eventPublisher.publishEvent(new
DataChangedEvent(ConfigGroupEnum.SELECTOR, DataEventTypeEnum.UPDATE,
Collections.singletonList(selectorData)));
+
}
-
+
/**
* fetch upstream data from db.
*/
@@ -292,7 +305,7 @@ public class UpstreamCheckService {
}
pluginDOList.stream().filter(Objects::nonNull).forEach(pluginDO -> {
final List<SelectorDO> selectorDOList =
selectorMapper.findByPluginId(pluginDO.getId());
- for (SelectorDO selectorDO : selectorDOList) {
+ for (SelectorDO selectorDO : selectorDOList) {
if (Objects.isNull(selectorDO) ||
StringUtils.isBlank(selectorDO.getHandle())) {
continue;
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/shiro/bean/StatelessAuthFilter.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/shiro/bean/StatelessAuthFilter.java
index 17cabb3..fac905c 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/shiro/bean/StatelessAuthFilter.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/shiro/bean/StatelessAuthFilter.java
@@ -44,14 +44,15 @@ public class StatelessAuthFilter extends
AccessControlFilter {
private static final String HEAD_TOKEN = "X-Access-Token";
@Override
- protected boolean isAccessAllowed(final ServletRequest servletRequest,
final ServletResponse servletResponse,
+ protected boolean isAccessAllowed(final ServletRequest servletRequest,
+ final ServletResponse servletResponse,
final Object o) {
return false;
}
@Override
- protected boolean onAccessDenied(final ServletRequest servletRequest,
final ServletResponse servletResponse)
- throws Exception {
+ protected boolean onAccessDenied(final ServletRequest servletRequest,
+ final ServletResponse servletResponse)
throws Exception {
HttpServletRequest httpServletRequest = (HttpServletRequest)
servletRequest;
if (StringUtils.equals(HttpMethod.OPTIONS.name(),
httpServletRequest.getMethod())) {
return true;
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/shiro/config/ShiroRealm.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/shiro/config/ShiroRealm.java
index 26ecacf..ef98d30 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/shiro/config/ShiroRealm.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/shiro/config/ShiroRealm.java
@@ -35,6 +35,7 @@ import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.springframework.stereotype.Service;
+import java.util.Objects;
import java.util.Set;
/**
@@ -83,7 +84,7 @@ public class ShiroRealm extends AuthorizingRealm {
}
DashboardUserVO dashboardUserVO =
dashboardUserService.findByUserName(userName);
- if (dashboardUserVO == null) {
+ if (Objects.isNull(dashboardUserVO)) {
throw new AuthenticationException(String.format("userName(%s) can
not be found.", userName));
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/ShenyuResultMessage.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/ShenyuResultMessage.java
index 8d7688c..95dda8b 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/ShenyuResultMessage.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/utils/ShenyuResultMessage.java
@@ -26,8 +26,6 @@ public final class ShenyuResultMessage {
public static final String CREATE_SUCCESS = "create success";
- public static final String CREATE_FAILED = "create failed";
-
public static final String DELETE_SUCCESS = "delete success";
public static final String UPDATE_SUCCESS = "update success";