From 75cc66ec025552a312fa57fc4cf1d3774af693a0 Mon Sep 17 00:00:00 2001 From: pizihao Date: Thu, 6 Oct 2022 01:11:10 +0800 Subject: [PATCH] fix : update use for hutool(#725) --- .../web/TomcatWebThreadPoolHandler.java | 5 +- .../web/UndertowWebThreadPoolHandler.java | 5 +- .../web/WebThreadPoolRunStateHandler.java | 24 ++++--- .../auth/filter/JWTAuthenticationFilter.java | 7 +-- .../auth/filter/JWTAuthorizationFilter.java | 4 +- .../auth/security/JwtTokenManager.java | 6 +- .../service/impl/PermissionServiceImpl.java | 13 ++-- .../auth/service/impl/RoleServiceImpl.java | 16 ++--- .../auth/service/impl/UserServiceImpl.java | 13 ++-- .../config/controller/ConfigController.java | 4 +- .../monitor/TimeCleanHistoryDataTask.java | 9 ++- .../config/notify/DefaultPublisher.java | 6 +- .../config/notify/DefaultSharePublisher.java | 7 ++- .../config/service/ConfigCacheService.java | 7 +-- .../config/service/LongPollingService.java | 8 +-- .../service/ThreadPoolAdapterService.java | 14 +++-- .../service/biz/impl/ConfigServiceImpl.java | 9 ++- .../biz/impl/HisRunDataServiceImpl.java | 30 ++++----- .../service/biz/impl/NotifyServiceImpl.java | 20 +++--- .../biz/impl/OperationLogServiceImpl.java | 8 +-- .../ClientCloseHookRemoveConfigCache.java | 4 +- .../cn/hippo4j/config/toolkit/MapUtil.java | 4 +- .../hippo4j/config/toolkit/RequestUtil.java | 4 +- .../hippo4j/config/toolkit/ClassUtilTest.java | 1 - .../hippo4j/config/toolkit/EnvUtilTest.java | 4 +- .../hippo4j/config/toolkit/MapUtilTest.java | 2 +- .../config/toolkit/Md5ConfigUtilTest.java | 6 +- .../ThreadPoolAdapterController.java | 14 +++-- .../controller/ThreadPoolController.java | 63 +++++++++++++------ .../service/impl/DashboardServiceImpl.java | 38 ++++++----- .../ThreadPoolNotifyAlarmHandler.java | 8 +-- .../state/AbstractThreadPoolRuntime.java | 6 +- .../state/ThreadPoolRunStateHandler.java | 27 ++++---- .../state/ThreadPoolStatusHandler.java | 4 +- .../cn/hippo4j/core/toolkit/IdentifyUtil.java | 22 ++++--- .../core/inittest/AlarmSendMessageTest.java | 9 ++- .../core/inittest/RunStateHandlerTest.java | 13 +++- .../core/inittest/TaskDecoratorTest.java | 15 ++--- .../platform/LarkSendMessageHandler.java | 24 +++---- .../platform/WeChatSendMessageHandler.java | 10 +-- .../base/AbstractRobotSendMessageHandler.java | 14 ++--- .../message/service/AlarmControlHandler.java | 20 +++--- .../Hippo4jBaseSendMessageService.java | 19 ++++-- .../hippo4j/monitor/es/EsMonitorHandler.java | 10 ++- .../micrometer/MicrometerMonitorHandler.java | 3 +- .../notify/CoreNotifyConfigBuilder.java | 4 +- .../BootstrapConfigPropertiesBinderAdapt.java | 9 ++- .../AdapterExecutorsRefreshListener.java | 5 +- .../config/DiscoveryConfiguration.java | 7 ++- .../springboot/starter/core/ClientWorker.java | 10 +-- .../starter/core/DiscoveryClient.java | 7 +-- .../monitor/ReportingEventExecutor.java | 3 +- .../monitor/collect/RunTimeInfoCollector.java | 4 +- .../notify/ServerNotifyConfigBuilder.java | 8 +-- .../starter/remote/ServerHttpAgent.java | 4 +- .../starter/remote/ServerListManager.java | 4 +- 56 files changed, 345 insertions(+), 279 deletions(-) diff --git a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/TomcatWebThreadPoolHandler.java b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/TomcatWebThreadPoolHandler.java index 70057a9d..c15cf7a6 100644 --- a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/TomcatWebThreadPoolHandler.java +++ b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/TomcatWebThreadPoolHandler.java @@ -24,12 +24,13 @@ import cn.hippo4j.common.model.ThreadPoolParameterInfo; import cn.hippo4j.common.model.ThreadPoolRunStateInfo; import cn.hippo4j.common.toolkit.CalculateUtil; import cn.hippo4j.core.executor.state.AbstractThreadPoolRuntime; -import cn.hutool.core.date.DateUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.web.embedded.tomcat.TomcatWebServer; import org.springframework.boot.web.server.WebServer; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; @@ -138,7 +139,7 @@ public class TomcatWebThreadPoolHandler extends AbstractWebThreadPoolService { runStateInfo.setQueueRemainingCapacity(remainingCapacity); runStateInfo.setLargestPoolSize(largestPoolSize); runStateInfo.setCompletedTaskCount(completedTaskCount); - runStateInfo.setClientLastRefreshTime(DateUtil.formatDateTime(new Date())); + runStateInfo.setClientLastRefreshTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); runStateInfo.setTimestamp(System.currentTimeMillis()); String rejectedExecutionHandlerName = executor instanceof ThreadPoolExecutor ? ((ThreadPoolExecutor) executor).getRejectedExecutionHandler().getClass().getSimpleName() : tomcatThreadPoolExecutor.getRejectedExecutionHandler().getClass().getSimpleName(); diff --git a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/UndertowWebThreadPoolHandler.java b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/UndertowWebThreadPoolHandler.java index 13038842..731b094a 100644 --- a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/UndertowWebThreadPoolHandler.java +++ b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/UndertowWebThreadPoolHandler.java @@ -24,7 +24,6 @@ import cn.hippo4j.common.model.ThreadPoolParameterInfo; import cn.hippo4j.common.model.ThreadPoolRunStateInfo; import cn.hippo4j.common.toolkit.CalculateUtil; import cn.hippo4j.core.executor.DynamicThreadPoolExecutor; -import cn.hutool.core.date.DateUtil; import io.undertow.Undertow; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.web.embedded.undertow.UndertowServletWebServer; @@ -35,6 +34,8 @@ import org.xnio.XnioWorker; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.Objects; import java.util.concurrent.Executor; @@ -128,7 +129,7 @@ public class UndertowWebThreadPoolHandler extends AbstractWebThreadPoolService { ? ((DynamicThreadPoolExecutor) fieldObject).getRejectCountNum() : -1L; stateInfo.setRejectCount(rejectCount); - stateInfo.setClientLastRefreshTime(DateUtil.formatDateTime(new Date())); + stateInfo.setClientLastRefreshTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); stateInfo.setTimestamp(System.currentTimeMillis()); return stateInfo; } diff --git a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/WebThreadPoolRunStateHandler.java b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/WebThreadPoolRunStateHandler.java index b5442300..2cee24ef 100644 --- a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/WebThreadPoolRunStateHandler.java +++ b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/WebThreadPoolRunStateHandler.java @@ -20,10 +20,12 @@ package cn.hippo4j.adapter.web; import cn.hippo4j.common.model.ThreadPoolRunStateInfo; import cn.hippo4j.common.toolkit.ByteConvertUtil; import cn.hippo4j.core.executor.state.AbstractThreadPoolRuntime; -import cn.hutool.core.util.StrUtil; -import cn.hutool.system.RuntimeInfo; import lombok.extern.slf4j.Slf4j; +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryMXBean; +import java.lang.management.MemoryUsage; + /** * Web thread pool run state handler. */ @@ -32,16 +34,20 @@ public class WebThreadPoolRunStateHandler extends AbstractThreadPoolRuntime { @Override public ThreadPoolRunStateInfo supplement(ThreadPoolRunStateInfo poolRunStateInfo) { - RuntimeInfo runtimeInfo = new RuntimeInfo(); - String memoryProportion = StrUtil.builder( - "已分配: ", - ByteConvertUtil.getPrintSize(runtimeInfo.getTotalMemory()), - " / 最大可用: ", - ByteConvertUtil.getPrintSize(runtimeInfo.getMaxMemory())).toString(); + MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); + MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage(); + long used = heapMemoryUsage.getUsed(); + long max = heapMemoryUsage.getMax(); + String memoryProportion = new StringBuilder() + .append("已分配: ") + .append(ByteConvertUtil.getPrintSize(used)) + .append(" / 最大可用: ") + .append(ByteConvertUtil.getPrintSize(max)) + .toString(); poolRunStateInfo.setCurrentLoad(poolRunStateInfo.getCurrentLoad() + "%"); poolRunStateInfo.setPeakLoad(poolRunStateInfo.getPeakLoad() + "%"); poolRunStateInfo.setMemoryProportion(memoryProportion); - poolRunStateInfo.setFreeMemory(ByteConvertUtil.getPrintSize(runtimeInfo.getFreeMemory())); + poolRunStateInfo.setFreeMemory(ByteConvertUtil.getPrintSize(Math.subtractExact(max, used))); return poolRunStateInfo; } } diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthenticationFilter.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthenticationFilter.java index f6456ba8..0f93e918 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthenticationFilter.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthenticationFilter.java @@ -21,8 +21,8 @@ import cn.hippo4j.auth.model.biz.user.JwtUser; import cn.hippo4j.auth.model.biz.user.LoginUser; import cn.hippo4j.auth.toolkit.JwtTokenUtil; import cn.hippo4j.auth.toolkit.ReturnT; +import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.common.web.base.Results; -import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.AuthenticationManager; @@ -34,7 +34,6 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import javax.servlet.FilterChain; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -100,7 +99,7 @@ public class JWTAuthenticationFilter extends UsernamePasswordAuthenticationFilte Map maps = new HashMap(MAP_INITIAL_CAPACITY); maps.put("data", JwtTokenUtil.TOKEN_PREFIX + token); maps.put("roles", role.split(SPLIT_COMMA)); - response.getWriter().write(JSONUtil.toJsonStr(Results.success(maps))); + response.getWriter().write(JSONUtil.toJSONString(Results.success(maps))); } finally { rememberMe.remove(); } @@ -109,6 +108,6 @@ public class JWTAuthenticationFilter extends UsernamePasswordAuthenticationFilte @Override protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException { response.setCharacterEncoding("UTF-8"); - response.getWriter().write(JSONUtil.toJsonStr(new ReturnT(-1, "Server Error"))); + response.getWriter().write(JSONUtil.toJSONString(new ReturnT(-1, "Server Error"))); } } diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthorizationFilter.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthorizationFilter.java index 7ec3c66b..3b6cf69e 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthorizationFilter.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthorizationFilter.java @@ -20,10 +20,10 @@ package cn.hippo4j.auth.filter; import cn.hippo4j.auth.security.JwtTokenManager; import cn.hippo4j.auth.toolkit.JwtTokenUtil; import cn.hippo4j.common.toolkit.JSONUtil; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.toolkit.UserContext; import cn.hippo4j.common.web.base.Results; import cn.hippo4j.common.web.exception.ServiceException; -import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -61,7 +61,7 @@ public class JWTAuthorizationFilter extends BasicAuthenticationFilter { FilterChain chain) throws IOException, ServletException { // Token when verifying client interaction. String accessToken = request.getParameter(ACCESS_TOKEN); - if (StrUtil.isNotBlank(accessToken)) { + if (StringUtil.isNotBlank(accessToken)) { tokenManager.validateToken(accessToken); Authentication authentication = this.tokenManager.getAuthentication(accessToken); SecurityContextHolder.getContext().setAuthentication(authentication); diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/security/JwtTokenManager.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/security/JwtTokenManager.java index 84160cc9..17f52aaa 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/security/JwtTokenManager.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/security/JwtTokenManager.java @@ -17,7 +17,7 @@ package cn.hippo4j.auth.security; -import cn.hutool.core.util.StrUtil; +import cn.hippo4j.common.toolkit.StringUtil; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; @@ -64,7 +64,7 @@ public class JwtTokenManager { Claims claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token).getBody(); List authorities = AuthorityUtils .commaSeparatedStringToAuthorityList((String) claims.get(AUTHORITIES_KEY)); - User principal = new User(claims.getSubject(), StrUtil.EMPTY, authorities); - return new UsernamePasswordAuthenticationToken(principal, StrUtil.EMPTY, authorities); + User principal = new User(claims.getSubject(), StringUtil.EMPTY, authorities); + return new UsernamePasswordAuthenticationToken(principal, StringUtil.EMPTY, authorities); } } diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/PermissionServiceImpl.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/PermissionServiceImpl.java index b53b1c6a..b1f6d5a6 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/PermissionServiceImpl.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/PermissionServiceImpl.java @@ -21,8 +21,8 @@ import cn.hippo4j.auth.mapper.PermissionMapper; import cn.hippo4j.auth.model.biz.permission.PermissionQueryPageReqDTO; import cn.hippo4j.auth.model.biz.permission.PermissionRespDTO; import cn.hippo4j.auth.service.PermissionService; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; +import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.common.toolkit.StringUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -44,8 +44,7 @@ public class PermissionServiceImpl implements PermissionService { public IPage listPermission(int pageNo, int pageSize) { PermissionQueryPageReqDTO queryPage = new PermissionQueryPageReqDTO(pageNo, pageSize); IPage selectPage = permissionMapper.selectPage(queryPage, null); - - return selectPage.convert(each -> BeanUtil.toBean(each, PermissionRespDTO.class)); + return selectPage.convert(each -> BeanUtil.copyProperties(each, new PermissionRespDTO())); } @Override @@ -68,9 +67,9 @@ public class PermissionServiceImpl implements PermissionService { @Override public void deletePermission(String role, String resource, String action) { LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(PermissionInfo.class) - .eq(StrUtil.isNotBlank(role), PermissionInfo::getRole, role) - .eq(StrUtil.isNotBlank(resource), PermissionInfo::getResource, resource) - .eq(StrUtil.isNotBlank(action), PermissionInfo::getAction, action); + .eq(StringUtil.isNotBlank(role), PermissionInfo::getRole, role) + .eq(StringUtil.isNotBlank(resource), PermissionInfo::getResource, resource) + .eq(StringUtil.isNotBlank(action), PermissionInfo::getAction, action); permissionMapper.delete(updateWrapper); } } diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/RoleServiceImpl.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/RoleServiceImpl.java index dd45b56c..15885e98 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/RoleServiceImpl.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/RoleServiceImpl.java @@ -22,9 +22,9 @@ import cn.hippo4j.auth.model.biz.role.RoleQueryPageReqDTO; import cn.hippo4j.auth.model.biz.role.RoleRespDTO; import cn.hippo4j.auth.service.PermissionService; import cn.hippo4j.auth.service.RoleService; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; +import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.common.toolkit.CollectionUtil; +import cn.hippo4j.common.toolkit.StringUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -51,7 +51,7 @@ public class RoleServiceImpl implements RoleService { public IPage listRole(int pageNo, int pageSize) { RoleQueryPageReqDTO queryPage = new RoleQueryPageReqDTO(pageNo, pageSize); IPage selectPage = roleMapper.selectPage(queryPage, null); - return selectPage.convert(each -> BeanUtil.toBean(each, RoleRespDTO.class)); + return selectPage.convert(each -> BeanUtil.copyProperties(each, new RoleRespDTO())); } @Override @@ -70,14 +70,14 @@ public class RoleServiceImpl implements RoleService { @Override public void deleteRole(String role, String userName) { - List roleStrList = CollUtil.toList(role); - if (StrUtil.isBlank(role)) { + List roleStrList = CollectionUtil.toList(role); + if (StringUtil.isBlank(role)) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(RoleInfo.class).eq(RoleInfo::getUserName, userName); roleStrList = roleMapper.selectList(queryWrapper).stream().map(RoleInfo::getRole).collect(Collectors.toList()); } LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(RoleInfo.class) - .eq(StrUtil.isNotBlank(role), RoleInfo::getRole, role) - .eq(StrUtil.isNotBlank(userName), RoleInfo::getUserName, userName); + .eq(StringUtil.isNotBlank(role), RoleInfo::getRole, role) + .eq(StringUtil.isNotBlank(userName), RoleInfo::getUserName, userName); roleMapper.delete(updateWrapper); roleStrList.forEach(each -> permissionService.deletePermission(each, "", "")); } diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/UserServiceImpl.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/UserServiceImpl.java index f94df6a2..731280e8 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/UserServiceImpl.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/UserServiceImpl.java @@ -24,10 +24,9 @@ import cn.hippo4j.auth.model.biz.user.UserReqDTO; import cn.hippo4j.auth.model.biz.user.UserRespDTO; import cn.hippo4j.auth.service.RoleService; import cn.hippo4j.auth.service.UserService; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.web.exception.ServiceException; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -59,7 +58,7 @@ public class UserServiceImpl implements UserService { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(UserInfo.class) .eq(StringUtil.isNotBlank(reqDTO.getUserName()), UserInfo::getUserName, reqDTO.getUserName()); IPage selectPage = userMapper.selectPage(reqDTO, queryWrapper); - return selectPage.convert(each -> BeanUtil.toBean(each, UserRespDTO.class)); + return selectPage.convert(each -> BeanUtil.copyProperties(each, new UserRespDTO())); } @Override @@ -71,16 +70,16 @@ public class UserServiceImpl implements UserService { throw new RuntimeException("用户名重复"); } reqDTO.setPassword(bCryptPasswordEncoder.encode(reqDTO.getPassword())); - UserInfo insertUser = BeanUtil.toBean(reqDTO, UserInfo.class); + UserInfo insertUser = BeanUtil.copyProperties(reqDTO, new UserInfo()); userMapper.insert(insertUser); } @Override public void updateUser(UserReqDTO reqDTO) { - if (StrUtil.isNotBlank(reqDTO.getPassword())) { + if (StringUtil.isNotBlank(reqDTO.getPassword())) { reqDTO.setPassword(bCryptPasswordEncoder.encode(reqDTO.getPassword())); } - UserInfo updateUser = BeanUtil.toBean(reqDTO, UserInfo.class); + UserInfo updateUser = BeanUtil.copyProperties(reqDTO, new UserInfo()); LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(UserInfo.class) .eq(UserInfo::getUserName, reqDTO.getUserName()); userMapper.update(updateUser, updateWrapper); @@ -108,7 +107,7 @@ public class UserServiceImpl implements UserService { Wrapper queryWrapper = Wrappers.lambdaQuery(UserInfo.class).eq(UserInfo::getUserName, reqDTO.getUserName()); UserInfo userInfo = userMapper.selectOne(queryWrapper); UserRespDTO respUser = Optional.ofNullable(userInfo) - .map(each -> BeanUtil.toBean(each, UserRespDTO.class)) + .map(each -> BeanUtil.copyProperties(each, new UserRespDTO())) .orElseThrow(() -> new ServiceException("查询无此用户, 可以尝试清空缓存或退出登录.")); return respUser; } diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/controller/ConfigController.java b/hippo4j-config/src/main/java/cn/hippo4j/config/controller/ConfigController.java index 5c0fe84f..25543ee8 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/controller/ConfigController.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/controller/ConfigController.java @@ -19,6 +19,7 @@ package cn.hippo4j.config.controller; import cn.hippo4j.common.constant.Constants; import cn.hippo4j.common.model.register.DynamicThreadPoolRegisterWrapper; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.web.base.Result; import cn.hippo4j.common.web.base.Results; import cn.hippo4j.config.model.ConfigAllInfo; @@ -27,7 +28,6 @@ import cn.hippo4j.config.service.ConfigCacheService; import cn.hippo4j.config.service.ConfigServletInner; import cn.hippo4j.config.service.biz.ConfigService; import cn.hippo4j.config.toolkit.Md5ConfigUtil; -import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import org.springframework.util.StringUtils; @@ -87,7 +87,7 @@ public class ConfigController { @PostMapping("/remove/config/cache") public Result removeConfigCache(@RequestBody Map bodyMap) { String groupKey = bodyMap.get(Constants.GROUP_KEY); - if (StrUtil.isNotBlank(groupKey)) { + if (StringUtil.isNotBlank(groupKey)) { ConfigCacheService.removeConfigCache(groupKey); } return Results.success(); diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/monitor/TimeCleanHistoryDataTask.java b/hippo4j-config/src/main/java/cn/hippo4j/config/monitor/TimeCleanHistoryDataTask.java index 6aa4df3f..f97fe5d0 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/monitor/TimeCleanHistoryDataTask.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/monitor/TimeCleanHistoryDataTask.java @@ -18,11 +18,10 @@ package cn.hippo4j.config.monitor; import cn.hippo4j.common.executor.ExecutorFactory; +import cn.hippo4j.common.toolkit.DateUtil; import cn.hippo4j.config.config.ServerBootstrapProperties; import cn.hippo4j.config.model.HisRunDataInfo; import cn.hippo4j.config.service.biz.HisRunDataService; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.NonNull; @@ -30,6 +29,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; import java.util.Date; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -53,10 +53,9 @@ public class TimeCleanHistoryDataTask implements Runnable, InitializingBean { @Override public void run() { - Date currentDate = new Date(); - DateTime offsetMinuteDateTime = DateUtil.offsetMinute(currentDate, -properties.getCleanHistoryDataPeriod()); + LocalDateTime offsetMinuteDateTime = LocalDateTime.now().plusMinutes(-properties.getCleanHistoryDataPeriod()); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(HisRunDataInfo.class) - .le(HisRunDataInfo::getTimestamp, offsetMinuteDateTime.getTime()); + .le(HisRunDataInfo::getTimestamp, DateUtil.getTime(offsetMinuteDateTime)); hisRunDataService.remove(queryWrapper); } diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/notify/DefaultPublisher.java b/hippo4j-config/src/main/java/cn/hippo4j/config/notify/DefaultPublisher.java index 6c2860ff..7b8f67e6 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/notify/DefaultPublisher.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/notify/DefaultPublisher.java @@ -18,11 +18,13 @@ package cn.hippo4j.config.notify; import cn.hippo4j.config.event.AbstractEvent; -import cn.hutool.core.collection.ConcurrentHashSet; import cn.hippo4j.config.notify.listener.AbstractSubscriber; import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; @@ -34,7 +36,7 @@ import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; @Slf4j public class DefaultPublisher extends Thread implements EventPublisher { - protected final ConcurrentHashSet subscribers = new ConcurrentHashSet(); + protected final Set subscribers = Collections.synchronizedSet(new HashSet<>()); private BlockingQueue queue; diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/notify/DefaultSharePublisher.java b/hippo4j-config/src/main/java/cn/hippo4j/config/notify/DefaultSharePublisher.java index b877bfbb..185a6352 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/notify/DefaultSharePublisher.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/notify/DefaultSharePublisher.java @@ -18,10 +18,11 @@ package cn.hippo4j.config.notify; import cn.hippo4j.config.event.AbstractEvent; -import cn.hutool.core.collection.ConcurrentHashSet; import cn.hippo4j.config.notify.listener.AbstractSubscriber; import cn.hippo4j.config.event.AbstractSlowEvent; +import java.util.Collections; +import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -35,7 +36,7 @@ public class DefaultSharePublisher extends DefaultPublisher { private final Map, Set> subMappings = new ConcurrentHashMap(); - protected final ConcurrentHashSet subscribers = new ConcurrentHashSet(); + protected final Set subscribers = Collections.synchronizedSet(new HashSet<>()); private final Lock lock = new ReentrantLock(); @@ -46,7 +47,7 @@ public class DefaultSharePublisher extends DefaultPublisher { try { Set sets = subMappings.get(subSlowEventType); if (sets == null) { - Set newSet = new ConcurrentHashSet(); + Set newSet = Collections.synchronizedSet(new HashSet<>()); newSet.add(subscriber); subMappings.put(subSlowEventType, newSet); return; diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/ConfigCacheService.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/ConfigCacheService.java index 194e1811..6dd57a50 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/ConfigCacheService.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/ConfigCacheService.java @@ -25,14 +25,13 @@ import cn.hippo4j.common.design.observer.ObserverMessage; import cn.hippo4j.common.toolkit.CollectionUtil; import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.common.toolkit.Md5Util; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.config.event.LocalDataChangeEvent; import cn.hippo4j.config.model.CacheItem; import cn.hippo4j.config.model.ConfigAllInfo; import cn.hippo4j.config.notify.NotifyCenter; import cn.hippo4j.config.service.biz.ConfigService; import cn.hippo4j.config.toolkit.MapUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -81,7 +80,7 @@ public class ConfigCacheService { private synchronized static String getContentMd5IsNullPut(String groupKey, String clientIdentify) { Map cacheItemMap = Optional.ofNullable(CLIENT_CONFIG_CACHE.get(groupKey)).orElse(Maps.newHashMap()); CacheItem cacheItem = null; - if (CollUtil.isNotEmpty(cacheItemMap) && (cacheItem = cacheItemMap.get(clientIdentify)) != null) { + if (CollectionUtil.isNotEmpty(cacheItemMap) && (cacheItem = cacheItemMap.get(clientIdentify)) != null) { return cacheItem.md5; } if (CONFIG_SERVICE == null) { @@ -89,7 +88,7 @@ public class ConfigCacheService { } String[] params = groupKey.split(GROUP_KEY_DELIMITER_TRANSLATION); ConfigAllInfo config = CONFIG_SERVICE.findConfigRecentInfo(params); - if (config != null && StrUtil.isNotBlank(config.getTpId())) { + if (config != null && StringUtil.isNotBlank(config.getTpId())) { cacheItem = new CacheItem(groupKey, config); cacheItemMap.put(clientIdentify, cacheItem); CLIENT_CONFIG_CACHE.put(groupKey, cacheItemMap); diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/LongPollingService.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/LongPollingService.java index 918e6a3c..472961f9 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/LongPollingService.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/LongPollingService.java @@ -17,8 +17,10 @@ package cn.hippo4j.config.service; +import cn.hippo4j.common.toolkit.CollectionUtil; import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.common.toolkit.Md5Util; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.web.base.Results; import cn.hippo4j.config.event.AbstractEvent; import cn.hippo4j.config.event.LocalDataChangeEvent; @@ -28,8 +30,6 @@ import cn.hippo4j.config.toolkit.ConfigExecutor; import cn.hippo4j.config.toolkit.MapUtil; import cn.hippo4j.config.toolkit.Md5ConfigUtil; import cn.hippo4j.config.toolkit.RequestUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -118,7 +118,7 @@ public class LongPollingService { ClientLongPolling clientSub = iter.next(); String identity = groupKey + GROUP_KEY_DELIMITER + identify; List parseMapForFilter = Lists.newArrayList(identity); - if (StrUtil.isBlank(identify)) { + if (StringUtil.isBlank(identify)) { parseMapForFilter = MapUtil.parseMapForFilter(clientSub.clientMd5Map, groupKey); } parseMapForFilter.forEach(each -> { @@ -274,7 +274,7 @@ public class LongPollingService { * @param changedGroups Changed thread pool group key */ private void generateResponse(HttpServletResponse response, List changedGroups) { - if (CollUtil.isNotEmpty(changedGroups)) { + if (CollectionUtil.isNotEmpty(changedGroups)) { try { String respStr = buildRespStr(changedGroups); response.setHeader("Pragma", "no-cache"); diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/ThreadPoolAdapterService.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/ThreadPoolAdapterService.java index d27c04e8..c3398025 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/ThreadPoolAdapterService.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/ThreadPoolAdapterService.java @@ -28,13 +28,13 @@ import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.web.base.Result; import cn.hippo4j.config.model.biz.adapter.ThreadPoolAdapterReqDTO; import cn.hippo4j.config.model.biz.adapter.ThreadPoolAdapterRespDTO; -import cn.hutool.core.text.StrBuilder; -import cn.hutool.http.HttpUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; import java.util.*; import java.util.stream.Collectors; @@ -99,12 +99,18 @@ public class ThreadPoolAdapterService { List addressList = actual.stream().map(ThreadPoolAdapterState::getClientAddress).collect(Collectors.toList()); List result = new ArrayList<>(addressList.size()); addressList.forEach(each -> { - String urlString = StrBuilder.create("http://", each, "/adapter/thread-pool/info").toString(); + String urlString = new StringBuilder() + .append("http://") + .append(each) + .append("/adapter/thread-pool/info") + .toString(); Map param = Maps.newHashMap(); param.put("mark", requestParameter.getMark()); param.put("threadPoolKey", requestParameter.getThreadPoolKey()); try { - String resultStr = HttpUtil.get(urlString, param, HTTP_EXECUTE_TIMEOUT); + + RestTemplate template = new RestTemplate(); + String resultStr = template.getForObject(urlString, String.class, param); if (StringUtil.isNotBlank(resultStr)) { Result restResult = JSONUtil.parseObject(resultStr, new TypeReference>() { }); diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ConfigServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ConfigServiceImpl.java index 5162b11b..c4f824e4 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ConfigServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/ConfigServiceImpl.java @@ -33,7 +33,6 @@ import cn.hippo4j.config.service.ConfigCacheService; import cn.hippo4j.config.service.ConfigChangePublisher; import cn.hippo4j.config.service.biz.*; import cn.hippo4j.config.toolkit.BeanUtil; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -70,9 +69,9 @@ public class ConfigServiceImpl implements ConfigService { @Override public ConfigAllInfo findConfigAllInfo(String tpId, String itemId, String tenantId) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(ConfigAllInfo.class) - .eq(StrUtil.isNotBlank(tpId), ConfigAllInfo::getTpId, tpId) - .eq(StrUtil.isNotBlank(itemId), ConfigAllInfo::getItemId, itemId) - .eq(StrUtil.isNotBlank(tenantId), ConfigAllInfo::getTenantId, tenantId); + .eq(StringUtil.isNotBlank(tpId), ConfigAllInfo::getTpId, tpId) + .eq(StringUtil.isNotBlank(itemId), ConfigAllInfo::getItemId, itemId) + .eq(StringUtil.isNotBlank(tenantId), ConfigAllInfo::getTenantId, tenantId); ConfigAllInfo configAllInfo = configInfoMapper.selectOne(wrapper); return configAllInfo; } @@ -82,7 +81,7 @@ public class ConfigServiceImpl implements ConfigService { ConfigAllInfo resultConfig; ConfigAllInfo configInstance = null; String instanceId = params[3]; - if (StrUtil.isNotBlank(instanceId)) { + if (StringUtil.isNotBlank(instanceId)) { LambdaQueryWrapper instanceQueryWrapper = Wrappers.lambdaQuery(ConfigInstanceInfo.class) .eq(ConfigInstanceInfo::getTpId, params[0]) .eq(ConfigInstanceInfo::getItemId, params[1]) diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/HisRunDataServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/HisRunDataServiceImpl.java index 0466070a..b2a0cbd4 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/HisRunDataServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/HisRunDataServiceImpl.java @@ -20,6 +20,7 @@ package cn.hippo4j.config.service.biz.impl; import cn.hippo4j.common.monitor.Message; import cn.hippo4j.common.monitor.MessageWrapper; import cn.hippo4j.common.monitor.RuntimeMessage; +import cn.hippo4j.common.toolkit.DateUtil; import cn.hippo4j.common.toolkit.GroupKey; import cn.hippo4j.common.toolkit.MessageConvert; import cn.hippo4j.common.web.base.Result; @@ -33,8 +34,6 @@ import cn.hippo4j.config.model.biz.monitor.MonitorRespDTO; import cn.hippo4j.config.monitor.QueryMonitorExecuteChoose; import cn.hippo4j.config.service.biz.HisRunDataService; import cn.hippo4j.config.toolkit.BeanUtil; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; @@ -42,11 +41,12 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; -import static cn.hutool.core.date.DatePattern.NORM_TIME_PATTERN; +import static cn.hippo4j.common.toolkit.DateUtil.NORM_TIME_PATTERN; /** * His run data service impl. @@ -63,15 +63,15 @@ public class HisRunDataServiceImpl extends ServiceImpl query(MonitorQueryReqDTO reqDTO) { - Date currentDate = new Date(); - DateTime dateTime = DateUtil.offsetMinute(currentDate, -properties.getCleanHistoryDataPeriod()); - long startTime = dateTime.getTime(); + LocalDateTime currentDate = LocalDateTime.now(); + LocalDateTime dateTime = currentDate.plusMinutes(-properties.getCleanHistoryDataPeriod()); + long startTime = DateUtil.getTime(dateTime); List hisRunDataInfos = this.lambdaQuery() .eq(HisRunDataInfo::getTenantId, reqDTO.getTenantId()) .eq(HisRunDataInfo::getItemId, reqDTO.getItemId()) .eq(HisRunDataInfo::getTpId, reqDTO.getTpId()) .eq(HisRunDataInfo::getInstanceId, reqDTO.getInstanceId()) - .between(HisRunDataInfo::getTimestamp, startTime, currentDate.getTime()) + .between(HisRunDataInfo::getTimestamp, startTime, DateUtil.getTime(currentDate)) .orderByAsc(HisRunDataInfo::getTimestamp) .list(); return BeanUtil.convert(hisRunDataInfos, MonitorRespDTO.class); @@ -79,15 +79,15 @@ public class HisRunDataServiceImpl extends ServiceImpl hisRunDataInfos = this.lambdaQuery() .eq(HisRunDataInfo::getTenantId, reqDTO.getTenantId()) .eq(HisRunDataInfo::getItemId, reqDTO.getItemId()) .eq(HisRunDataInfo::getTpId, reqDTO.getTpId()) .eq(HisRunDataInfo::getInstanceId, reqDTO.getInstanceId()) - .between(HisRunDataInfo::getTimestamp, startTime, currentDate.getTime()) + .between(HisRunDataInfo::getTimestamp, startTime, DateUtil.getTime(currentDate)) .orderByAsc(HisRunDataInfo::getTimestamp) .list(); List times = Lists.newArrayList(); @@ -127,16 +127,16 @@ public class HisRunDataServiceImpl extends ServiceImpl { String[] parseKey = GroupKey.parseKey(each); List notifyInfos = listNotifyCommon("CONFIG", parseKey); - if (CollUtil.isNotEmpty(notifyInfos)) { - notifyListRespList.add(new NotifyListRespDTO(StrUtil.builder(parseKey[0], "+", "CONFIG").toString(), notifyInfos)); + if (CollectionUtil.isNotEmpty(notifyInfos)) { + notifyListRespList.add(new NotifyListRespDTO(parseKey[0] + "+" + "CONFIG", notifyInfos)); } List alarmInfos = listNotifyCommon("ALARM", parseKey); - if (CollUtil.isNotEmpty(alarmInfos)) { - notifyListRespList.add(new NotifyListRespDTO(StrUtil.builder(parseKey[0], "+", "ALARM").toString(), alarmInfos)); + if (CollectionUtil.isNotEmpty(alarmInfos)) { + notifyListRespList.add(new NotifyListRespDTO(parseKey[0] + "+" + "ALARM", alarmInfos)); } }); return notifyListRespList; @@ -72,9 +72,9 @@ public class NotifyServiceImpl implements NotifyService { @Override public IPage queryPage(NotifyQueryReqDTO reqDTO) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(NotifyInfo.class) - .eq(StrUtil.isNotBlank(reqDTO.getTenantId()), NotifyInfo::getTenantId, reqDTO.getTenantId()) - .eq(StrUtil.isNotBlank(reqDTO.getItemId()), NotifyInfo::getItemId, reqDTO.getItemId()) - .eq(StrUtil.isNotBlank(reqDTO.getTpId()), NotifyInfo::getTpId, reqDTO.getTpId()) + .eq(StringUtil.isNotBlank(reqDTO.getTenantId()), NotifyInfo::getTenantId, reqDTO.getTenantId()) + .eq(StringUtil.isNotBlank(reqDTO.getItemId()), NotifyInfo::getItemId, reqDTO.getItemId()) + .eq(StringUtil.isNotBlank(reqDTO.getTpId()), NotifyInfo::getTpId, reqDTO.getTpId()) .orderByDesc(NotifyInfo::getGmtCreate); IPage resultPage = notifyInfoMapper.selectPage(reqDTO, queryWrapper); return resultPage.convert(each -> { @@ -173,7 +173,7 @@ public class NotifyServiceImpl implements NotifyService { .eq(NotifyInfo::getPlatform, requestParam.getPlatform()) .eq(NotifyInfo::getType, type); List existNotifyInfos = notifyInfoMapper.selectList(queryWrapper); - if (CollUtil.isNotEmpty(existNotifyInfos)) { + if (CollectionUtil.isNotEmpty(existNotifyInfos)) { throw new ServiceException(String.format("%s 新增通知报警配置重复", type)); } } diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/OperationLogServiceImpl.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/OperationLogServiceImpl.java index 10276d72..eee236bd 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/OperationLogServiceImpl.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/biz/impl/OperationLogServiceImpl.java @@ -17,13 +17,13 @@ package cn.hippo4j.config.service.biz.impl; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.config.mapper.OperationLogMapper; import cn.hippo4j.config.model.LogRecordInfo; import cn.hippo4j.config.model.biz.log.LogRecordQueryReqDTO; import cn.hippo4j.config.model.biz.log.LogRecordRespDTO; import cn.hippo4j.config.service.biz.OperationLogService; import cn.hippo4j.config.toolkit.BeanUtil; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -42,9 +42,9 @@ public class OperationLogServiceImpl implements OperationLogService { @Override public IPage queryPage(LogRecordQueryReqDTO pageQuery) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(LogRecordInfo.class) - .eq(StrUtil.isNotBlank(pageQuery.getBizNo()), LogRecordInfo::getBizNo, pageQuery.getBizNo()) - .eq(StrUtil.isNotBlank(pageQuery.getCategory()), LogRecordInfo::getCategory, pageQuery.getCategory()) - .eq(StrUtil.isNotBlank(pageQuery.getOperator()), LogRecordInfo::getOperator, pageQuery.getOperator()) + .eq(StringUtil.isNotBlank(pageQuery.getBizNo()), LogRecordInfo::getBizNo, pageQuery.getBizNo()) + .eq(StringUtil.isNotBlank(pageQuery.getCategory()), LogRecordInfo::getCategory, pageQuery.getCategory()) + .eq(StringUtil.isNotBlank(pageQuery.getOperator()), LogRecordInfo::getOperator, pageQuery.getOperator()) .orderByDesc(LogRecordInfo::getCreateTime); IPage selectPage = operationLogMapper.selectPage(pageQuery, queryWrapper); return selectPage.convert(each -> BeanUtil.convert(each, LogRecordRespDTO.class)); diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/handler/ClientCloseHookRemoveConfigCache.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/handler/ClientCloseHookRemoveConfigCache.java index d67ab517..7f8e8ca1 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/handler/ClientCloseHookRemoveConfigCache.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/handler/ClientCloseHookRemoveConfigCache.java @@ -19,8 +19,8 @@ package cn.hippo4j.config.service.handler; import cn.hippo4j.common.api.ClientCloseHookExecute; import cn.hippo4j.common.toolkit.JSONUtil; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.config.service.ConfigCacheService; -import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -36,7 +36,7 @@ public class ClientCloseHookRemoveConfigCache implements ClientCloseHookExecute log.info("Remove Config Cache, Execute client hook function. Request: {}", JSONUtil.toJSONString(requestParam)); try { String groupKey = requestParam.getGroupKey(); - if (StrUtil.isNotBlank(groupKey)) { + if (StringUtil.isNotBlank(groupKey)) { ConfigCacheService.removeConfigCache(groupKey); } } catch (Exception ex) { diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/toolkit/MapUtil.java b/hippo4j-config/src/main/java/cn/hippo4j/config/toolkit/MapUtil.java index 0df8bdac..14621532 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/toolkit/MapUtil.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/toolkit/MapUtil.java @@ -17,7 +17,7 @@ package cn.hippo4j.config.toolkit; -import cn.hutool.core.collection.CollUtil; +import cn.hippo4j.common.toolkit.CollectionUtil; import com.google.common.collect.Lists; import java.util.List; @@ -54,7 +54,7 @@ public class MapUtil { */ public static List parseMapForFilter(Map sourceMap, String filters) { List resultList = Lists.newArrayList(); - if (CollUtil.isEmpty(sourceMap)) { + if (CollectionUtil.isEmpty(sourceMap)) { return resultList; } sourceMap.forEach((key, val) -> { diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/toolkit/RequestUtil.java b/hippo4j-config/src/main/java/cn/hippo4j/config/toolkit/RequestUtil.java index 85d369cf..cf79e888 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/toolkit/RequestUtil.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/toolkit/RequestUtil.java @@ -17,7 +17,7 @@ package cn.hippo4j.config.toolkit; -import cn.hutool.core.util.StrUtil; +import cn.hippo4j.common.toolkit.StringUtil; import javax.servlet.http.HttpServletRequest; @@ -36,6 +36,6 @@ public class RequestUtil { public static String getClientIdentify(HttpServletRequest request) { String identify = request.getHeader(LONG_PULLING_CLIENT_IDENTIFICATION); - return StrUtil.isBlank(identify) ? "" : identify; + return StringUtil.isBlank(identify) ? "" : identify; } } diff --git a/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/ClassUtilTest.java b/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/ClassUtilTest.java index cffb82b1..66a0f5ea 100644 --- a/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/ClassUtilTest.java +++ b/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/ClassUtilTest.java @@ -18,7 +18,6 @@ package cn.hippo4j.config.toolkit; import cn.hippo4j.common.toolkit.Assert; -import cn.hutool.core.lang.caller.CallerUtil; import org.junit.Test; import java.util.Objects; diff --git a/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/EnvUtilTest.java b/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/EnvUtilTest.java index 109ee0ba..f65e9c5b 100644 --- a/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/EnvUtilTest.java +++ b/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/EnvUtilTest.java @@ -18,7 +18,7 @@ package cn.hippo4j.config.toolkit; import cn.hippo4j.common.toolkit.Assert; -import cn.hutool.core.util.StrUtil; +import cn.hippo4j.common.toolkit.StringUtil; import org.junit.Test; /** @@ -29,7 +29,7 @@ public class EnvUtilTest { @Test public void getHippo4JHomeTest() { String hippo4JHome = EnvUtil.getHippo4JHome(); - Assert.isTrue(StrUtil.isNotBlank(hippo4JHome)); + Assert.isTrue(StringUtil.isNotBlank(hippo4JHome)); } @Test diff --git a/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/MapUtilTest.java b/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/MapUtilTest.java index e67f3910..a0153ee3 100644 --- a/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/MapUtilTest.java +++ b/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/MapUtilTest.java @@ -18,7 +18,7 @@ package cn.hippo4j.config.toolkit; import cn.hippo4j.common.toolkit.Assert; -import cn.hutool.core.collection.CollectionUtil; +import cn.hippo4j.common.toolkit.CollectionUtil; import com.google.common.collect.ImmutableMap; import org.junit.Test; diff --git a/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/Md5ConfigUtilTest.java b/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/Md5ConfigUtilTest.java index 28e7ebb8..0920196a 100644 --- a/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/Md5ConfigUtilTest.java +++ b/hippo4j-config/src/test/java/cn/hippo4j/config/toolkit/Md5ConfigUtilTest.java @@ -18,8 +18,8 @@ package cn.hippo4j.config.toolkit; import cn.hippo4j.common.toolkit.Assert; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.config.model.ConfigAllInfo; -import cn.hutool.core.util.StrUtil; import org.assertj.core.util.Lists; import org.junit.Test; @@ -66,7 +66,7 @@ public class Md5ConfigUtilTest { } catch (IOException ignored) { } - Assert.isTrue(Objects.equals(StrUtil.EMPTY, key)); + Assert.isTrue(Objects.equals(StringUtil.EMPTY, key)); } @Test @@ -85,7 +85,7 @@ public class Md5ConfigUtilTest { ConfigAllInfo configAllInfo = new ConfigAllInfo(); configAllInfo.setDesc("hippo4j config"); String tpContentMd5 = Md5ConfigUtil.getTpContentMd5(configAllInfo); - Assert.isTrue(StrUtil.isNotEmpty(tpContentMd5)); + Assert.isTrue(StringUtil.isNotEmpty(tpContentMd5)); } } diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolAdapterController.java b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolAdapterController.java index f743ae85..8937a004 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolAdapterController.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolAdapterController.java @@ -23,14 +23,14 @@ import cn.hippo4j.common.web.base.Results; import cn.hippo4j.config.model.biz.adapter.ThreadPoolAdapterReqDTO; import cn.hippo4j.config.model.biz.adapter.ThreadPoolAdapterRespDTO; import cn.hippo4j.config.service.ThreadPoolAdapterService; -import cn.hutool.core.text.StrBuilder; -import cn.hutool.http.HttpUtil; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; +import java.util.HashMap; import java.util.List; import java.util.Set; @@ -46,6 +46,8 @@ public class ThreadPoolAdapterController { private final ThreadPoolAdapterService threadPoolAdapterService; + private final RestTemplate restTemplate = new RestTemplate(); + @GetMapping(REGISTER_ADAPTER_BASE_PATH + "/query") public Result> queryAdapterThreadPool(ThreadPoolAdapterReqDTO requestParameter) { List result = threadPoolAdapterService.query(requestParameter); @@ -61,8 +63,12 @@ public class ThreadPoolAdapterController { @PostMapping(REGISTER_ADAPTER_BASE_PATH + "/update") public Result updateAdapterThreadPool(@RequestBody ThreadPoolAdapterReqDTO requestParameter) { for (String each : requestParameter.getClientAddressList()) { - String urlString = StrBuilder.create("http://", each, "/adapter/thread-pool/update").toString(); - HttpUtil.post(urlString, JSONUtil.toJSONString(requestParameter), HTTP_EXECUTE_TIMEOUT); + String urlString = new StringBuilder() + .append("http://") + .append(each) + .append("/adapter/thread-pool/update") + .toString(); + restTemplate.postForObject(urlString, JSONUtil.toJSONString(requestParameter), Object.class); } return Results.success(); } diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolController.java b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolController.java index 08153056..f198f10b 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolController.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/controller/ThreadPoolController.java @@ -19,6 +19,7 @@ package cn.hippo4j.console.controller; import cn.hippo4j.common.constant.Constants; import cn.hippo4j.common.model.InstanceInfo; +import cn.hippo4j.common.toolkit.CollectionUtil; import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.web.base.Result; @@ -37,16 +38,14 @@ import cn.hippo4j.console.model.WebThreadPoolReqDTO; import cn.hippo4j.console.model.WebThreadPoolRespDTO; import cn.hippo4j.discovery.core.BaseInstanceRegistry; import cn.hippo4j.discovery.core.Lease; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.text.StrBuilder; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -66,6 +65,8 @@ public class ThreadPoolController { private final BaseInstanceRegistry baseInstanceRegistry; + private final RestTemplate restTemplate = new RestTemplate(); + @PostMapping("/query/page") public Result> queryNameSpacePage(@RequestBody ThreadPoolQueryReqDTO reqDTO) { return Results.success(threadPoolService.queryThreadPoolPage(reqDTO)); @@ -86,7 +87,7 @@ public class ThreadPoolController { @DeleteMapping("/delete") public Result deletePool(@RequestBody ThreadPoolDelReqDTO reqDTO) { List> leases = baseInstanceRegistry.listInstance(reqDTO.getItemId()); - Lease first = CollUtil.getFirst(leases); + Lease first = CollectionUtil.getFirst(leases); if (first == null) { threadPoolService.deletePool(reqDTO); return Results.success(); @@ -111,8 +112,13 @@ public class ThreadPoolController { @GetMapping("/run/state/{tpId}") public Result runState(@PathVariable("tpId") String tpId, @RequestParam(value = "clientAddress") String clientAddress) { - String urlString = StrBuilder.create("http://", clientAddress, "/run/state/", tpId).toString(); - String data = HttpUtil.get(urlString, HTTP_EXECUTE_TIMEOUT); + String urlString = new StringBuilder() + .append("http://") + .append(clientAddress) + .append("/run/state/") + .append(tpId) + .toString(); + String data = restTemplate.getForObject(urlString, String.class, new HashMap<>()); Result result = JSONUtil.parseObject(data, Result.class); return result; } @@ -120,8 +126,13 @@ public class ThreadPoolController { @GetMapping("/run/thread/state/{tpId}") public Result runThreadState(@PathVariable("tpId") String tpId, @RequestParam(value = "clientAddress") String clientAddress) { - String urlString = StrBuilder.create("http://", clientAddress, "/run/thread/state/", tpId).toString(); - String data = HttpUtil.get(urlString, HTTP_EXECUTE_TIMEOUT); + String urlString = new StringBuilder() + .append("http://") + .append(clientAddress) + .append("/run/thread/state/") + .append(tpId) + .toString(); + String data = restTemplate.getForObject(urlString, String.class, new HashMap<>()); Result result = JSONUtil.parseObject(data, Result.class); return result; } @@ -129,7 +140,7 @@ public class ThreadPoolController { @GetMapping("/list/client/instance/{itemId}") public Result listClientInstance(@PathVariable("itemId") String itemId) { List> leases = baseInstanceRegistry.listInstance(itemId); - Lease first = CollUtil.getFirst(leases); + Lease first = CollectionUtil.getFirst(leases); if (first == null) { return Results.success(Lists.newArrayList()); } @@ -156,16 +167,24 @@ public class ThreadPoolController { @GetMapping("/web/base/info") public Result getPoolBaseState(@RequestParam(value = "clientAddress") String clientAddress) { - String urlString = StrBuilder.create("http://", clientAddress, "/web/base/info").toString(); - String data = HttpUtil.get(urlString, HTTP_EXECUTE_TIMEOUT); + String urlString = new StringBuilder() + .append("http://") + .append(clientAddress) + .append("/web/base/info") + .toString(); + String data = restTemplate.getForObject(urlString, String.class, new HashMap<>()); Result result = JSONUtil.parseObject(data, Result.class); return result; } @GetMapping("/web/run/state") public Result getPoolRunState(@RequestParam(value = "clientAddress") String clientAddress) { - String urlString = StrBuilder.create("http://", clientAddress, "/web/run/state").toString(); - String data = HttpUtil.get(urlString, HTTP_EXECUTE_TIMEOUT); + String urlString = new StringBuilder() + .append("http://") + .append(clientAddress) + .append("/web/run/state") + .toString(); + String data = restTemplate.getForObject(urlString, String.class, new HashMap<>()); Result result = JSONUtil.parseObject(data, Result.class); return result; } @@ -173,8 +192,12 @@ public class ThreadPoolController { @PostMapping("/web/update/pool") public Result updateWebThreadPool(@RequestBody WebThreadPoolReqDTO requestParam) { for (String each : requestParam.getClientAddressList()) { - String urlString = StrBuilder.create("http://", each, "/web/update/pool").toString(); - HttpUtil.post(urlString, JSONUtil.toJSONString(requestParam), HTTP_EXECUTE_TIMEOUT); + String urlString = new StringBuilder() + .append("http://") + .append(each) + .append("/web/update/pool") + .toString(); + restTemplate.postForObject(urlString, JSONUtil.toJSONString(requestParam), Object.class); } return Results.success(); } @@ -183,7 +206,7 @@ public class ThreadPoolController { public Result> listInstance(@PathVariable("itemId") String itemId, @PathVariable("tpId") String tpId) { List> leases = baseInstanceRegistry.listInstance(itemId); - Lease first = CollUtil.getFirst(leases); + Lease first = CollectionUtil.getFirst(leases); if (first == null) { return Results.success(Lists.newArrayList()); } @@ -192,16 +215,16 @@ public class ThreadPoolController { String groupKey = getGroupKey(tpId, itemTenantKey); Map content = ConfigCacheService.getContent(groupKey); Map activeMap = - leases.stream().map(each -> each.getHolder()).filter(each -> StringUtil.isNotBlank(each.getActive())) + leases.stream().map(Lease::getHolder).filter(each -> StringUtil.isNotBlank(each.getActive())) .collect(Collectors.toMap(InstanceInfo::getIdentify, InstanceInfo::getActive)); - Map clientBasePathMap = leases.stream().map(each -> each.getHolder()) + Map clientBasePathMap = leases.stream().map(Lease::getHolder) .filter(each -> StringUtil.isNotBlank(each.getClientBasePath())) .collect(Collectors.toMap(InstanceInfo::getIdentify, InstanceInfo::getClientBasePath)); List returnThreadPool = Lists.newArrayList(); content.forEach((key, val) -> { ThreadPoolInstanceInfo threadPoolInstanceInfo = BeanUtil.convert(val.configAllInfo, ThreadPoolInstanceInfo.class); - threadPoolInstanceInfo.setClientAddress(StrUtil.subBefore(key, Constants.IDENTIFY_SLICER_SYMBOL, false)); + threadPoolInstanceInfo.setClientAddress(StringUtil.subBefore(key, Constants.IDENTIFY_SLICER_SYMBOL)); threadPoolInstanceInfo.setActive(activeMap.get(key)); threadPoolInstanceInfo.setIdentify(key); threadPoolInstanceInfo.setClientBasePath(clientBasePathMap.get(key)); diff --git a/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java b/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java index 09702b30..b94ef482 100644 --- a/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java +++ b/hippo4j-console/src/main/java/cn/hippo4j/console/service/impl/DashboardServiceImpl.java @@ -19,6 +19,8 @@ package cn.hippo4j.console.service.impl; import cn.hippo4j.common.enums.DelEnum; import cn.hippo4j.common.model.InstanceInfo; +import cn.hippo4j.common.toolkit.CollectionUtil; +import cn.hippo4j.common.toolkit.DateUtil; import cn.hippo4j.common.toolkit.GroupKey; import cn.hippo4j.config.mapper.ConfigInfoMapper; import cn.hippo4j.config.mapper.HisRunDataMapper; @@ -30,20 +32,14 @@ import cn.hippo4j.console.model.*; import cn.hippo4j.console.service.DashboardService; import cn.hippo4j.discovery.core.BaseInstanceRegistry; import cn.hippo4j.discovery.core.Lease; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Dict; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.time.LocalDateTime; +import java.util.*; import java.util.stream.Collectors; import static cn.hippo4j.common.toolkit.ContentUtil.getGroupKey; @@ -80,9 +76,11 @@ public class DashboardServiceImpl implements DashboardService { @Override public LineChartInfo getLineChatInfo() { - Date currentDate = new Date(); - DateTime startTime = DateUtil.offsetMinute(currentDate, -10); - List threadPoolTaskRankings = hisRunDataMapper.queryThreadPoolMaxRanking(startTime.getTime(), currentDate.getTime()); + LocalDateTime currentDate = LocalDateTime.now(); + LocalDateTime startDate = currentDate.plusMinutes(-10); + long currentTime = DateUtil.getTime(currentDate); + long startTime = DateUtil.getTime(startDate); + List threadPoolTaskRankings = hisRunDataMapper.queryThreadPoolMaxRanking(startTime, currentTime); List oneList = Lists.newArrayList(); List twoList = Lists.newArrayList(); List threeList = Lists.newArrayList(); @@ -115,7 +113,9 @@ public class DashboardServiceImpl implements DashboardService { Integer threadPoolCount = configInfoMapper.selectCount(threadPoolQueryWrapper); tenantThreadPoolNum += threadPoolCount; } - Dict dict = Dict.create().set("name", tenant.getTenantId()).set("value", tenantThreadPoolNum); + Map dict = new LinkedHashMap<>(); + dict.put("name", tenant.getTenantId()); + dict.put("value", tenantThreadPoolNum); tenantChartList.add(dict); } List resultTenantChartList = tenantChartList.stream() @@ -136,7 +136,9 @@ public class DashboardServiceImpl implements DashboardService { .eq(ConfigAllInfo::getDelFlag, DelEnum.NORMAL.getIntCode()); Integer threadPoolCount = configInfoMapper.selectCount(threadPoolQueryWrapper); if (threadPoolCount != null) { - Dict dict = Dict.create().set("name", each).set("value", threadPoolCount); + Map dict = new LinkedHashMap<>(); + dict.put("name", each); + dict.put("value", threadPoolCount); pieDataList.add(dict); } } @@ -154,15 +156,17 @@ public class DashboardServiceImpl implements DashboardService { @Override public RankingChart getRankingChart() { - Date currentDate = new Date(); - DateTime tenTime = DateUtil.offsetMinute(currentDate, -10); + LocalDateTime currentDate = LocalDateTime.now(); + LocalDateTime startDate = currentDate.plusMinutes(-10); + long currentTime = DateUtil.getTime(currentDate); + long startTime = DateUtil.getTime(startDate); List resultList = Lists.newArrayList(); - List threadPoolTaskRankings = hisRunDataMapper.queryThreadPoolTaskSumRanking(tenTime.getTime(), currentDate.getTime()); + List threadPoolTaskRankings = hisRunDataMapper.queryThreadPoolTaskSumRanking(startTime, currentTime); threadPoolTaskRankings.forEach(each -> { RankingChart.RankingChartInfo rankingChartInfo = new RankingChart.RankingChartInfo(); rankingChartInfo.setMaxCompletedTaskCount(each.getMaxCompletedTaskCount()); List> leases = baseInstanceRegistry.listInstance(each.getItemId()); - Lease first = CollUtil.getFirst(leases); + Lease first = CollectionUtil.getFirst(leases); if (first == null) { rankingChartInfo.setInst(0); } else { diff --git a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/ThreadPoolNotifyAlarmHandler.java b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/ThreadPoolNotifyAlarmHandler.java index b5588613..53489a23 100644 --- a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/ThreadPoolNotifyAlarmHandler.java +++ b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/ThreadPoolNotifyAlarmHandler.java @@ -29,7 +29,6 @@ import cn.hippo4j.message.enums.NotifyTypeEnum; import cn.hippo4j.message.service.ThreadPoolNotifyAlarm; import cn.hippo4j.message.request.AlarmNotifyRequest; import cn.hippo4j.message.request.ChangeParameterNotifyRequest; -import cn.hutool.core.util.StrUtil; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -198,7 +197,7 @@ public class ThreadPoolNotifyAlarmHandler implements Runnable, CommandLineRunner */ public void sendPoolConfigChange(ChangeParameterNotifyRequest request) { request.setActive(active.toUpperCase()); - String appName = StrUtil.isBlank(itemId) ? applicationName : itemId; + String appName = StringUtil.isBlank(itemId) ? applicationName : itemId; request.setAppName(appName); request.setIdentify(IdentifyUtil.getIdentify()); hippo4jSendMessageService.sendChangeMessage(request); @@ -218,8 +217,8 @@ public class ThreadPoolNotifyAlarmHandler implements Runnable, CommandLineRunner long rejectCount = threadPoolExecutor instanceof DynamicThreadPoolExecutor ? ((DynamicThreadPoolExecutor) threadPoolExecutor).getRejectCountNum() : -1L; - AlarmNotifyRequest alarmNotifyRequest = AlarmNotifyRequest.builder() - .appName(StrUtil.isBlank(itemId) ? applicationName : itemId) + return AlarmNotifyRequest.builder() + .appName(StringUtil.isBlank(itemId) ? applicationName : itemId) .active(active.toUpperCase()) .identify(IdentifyUtil.getIdentify()) .corePoolSize(threadPoolExecutor.getCorePoolSize()) @@ -235,6 +234,5 @@ public class ThreadPoolNotifyAlarmHandler implements Runnable, CommandLineRunner .rejectedExecutionHandlerName(rejectedExecutionHandler.getClass().getSimpleName()) .rejectCountNum(rejectCount) .build(); - return alarmNotifyRequest; } } diff --git a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/AbstractThreadPoolRuntime.java b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/AbstractThreadPoolRuntime.java index d584b1d6..6287b24a 100644 --- a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/AbstractThreadPoolRuntime.java +++ b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/AbstractThreadPoolRuntime.java @@ -22,9 +22,9 @@ import cn.hippo4j.core.executor.DynamicThreadPoolExecutor; import cn.hippo4j.core.executor.DynamicThreadPoolWrapper; import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage; import cn.hippo4j.common.toolkit.CalculateUtil; -import cn.hutool.core.date.DateUtil; -import java.util.Date; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; @@ -105,7 +105,7 @@ public abstract class AbstractThreadPoolRuntime { long rejectCount = pool instanceof DynamicThreadPoolExecutor ? ((DynamicThreadPoolExecutor) pool).getRejectCountNum() : -1L; stateInfo.setRejectCount(rejectCount); - stateInfo.setClientLastRefreshTime(DateUtil.formatDateTime(new Date())); + stateInfo.setClientLastRefreshTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); stateInfo.setTimestamp(System.currentTimeMillis()); return supplement(stateInfo); } diff --git a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/ThreadPoolRunStateHandler.java b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/ThreadPoolRunStateHandler.java index 94265d22..0f794c46 100644 --- a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/ThreadPoolRunStateHandler.java +++ b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/ThreadPoolRunStateHandler.java @@ -19,19 +19,20 @@ package cn.hippo4j.core.executor.state; import cn.hippo4j.common.model.ManyThreadPoolRunStateInfo; import cn.hippo4j.common.model.ThreadPoolRunStateInfo; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.common.toolkit.ByteConvertUtil; import cn.hippo4j.core.executor.DynamicThreadPoolExecutor; import cn.hippo4j.core.executor.DynamicThreadPoolWrapper; import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage; import cn.hippo4j.core.executor.support.AbstractDynamicExecutorSupport; import cn.hippo4j.core.toolkit.inet.InetUtils; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.system.RuntimeInfo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.core.env.ConfigurableEnvironment; +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryMXBean; +import java.lang.management.MemoryUsage; import java.util.concurrent.ThreadPoolExecutor; import static cn.hippo4j.core.toolkit.IdentifyUtil.CLIENT_IDENTIFICATION_VALUE; @@ -49,18 +50,22 @@ public class ThreadPoolRunStateHandler extends AbstractThreadPoolRuntime { @Override public ThreadPoolRunStateInfo supplement(ThreadPoolRunStateInfo poolRunStateInfo) { - RuntimeInfo runtimeInfo = new RuntimeInfo(); - String memoryProportion = StrUtil.builder( - "已分配: ", - ByteConvertUtil.getPrintSize(runtimeInfo.getTotalMemory()), - " / 最大可用: ", - ByteConvertUtil.getPrintSize(runtimeInfo.getMaxMemory())).toString(); + MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); + MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage(); + long used = heapMemoryUsage.getUsed(); + long max = heapMemoryUsage.getMax(); + String memoryProportion = new StringBuilder() + .append("已分配: ") + .append(ByteConvertUtil.getPrintSize(used)) + .append(" / 最大可用: ") + .append(ByteConvertUtil.getPrintSize(max)) + .toString(); poolRunStateInfo.setCurrentLoad(poolRunStateInfo.getCurrentLoad() + "%"); poolRunStateInfo.setPeakLoad(poolRunStateInfo.getPeakLoad() + "%"); String ipAddress = hippo4JInetUtils.findFirstNonLoopBackHostInfo().getIpAddress(); poolRunStateInfo.setHost(ipAddress); poolRunStateInfo.setMemoryProportion(memoryProportion); - poolRunStateInfo.setFreeMemory(ByteConvertUtil.getPrintSize(runtimeInfo.getFreeMemory())); + poolRunStateInfo.setFreeMemory(ByteConvertUtil.getPrintSize(Math.subtractExact(max, used))); String threadPoolId = poolRunStateInfo.getTpId(); DynamicThreadPoolWrapper executorService = GlobalThreadPoolManage.getExecutorService(threadPoolId); ThreadPoolExecutor pool = executorService.getExecutor(); @@ -71,7 +76,7 @@ public class ThreadPoolRunStateHandler extends AbstractThreadPoolRuntime { rejectedName = pool.getRejectedExecutionHandler().getClass().getSimpleName(); } poolRunStateInfo.setRejectedName(rejectedName); - ManyThreadPoolRunStateInfo manyThreadPoolRunStateInfo = BeanUtil.toBean(poolRunStateInfo, ManyThreadPoolRunStateInfo.class); + ManyThreadPoolRunStateInfo manyThreadPoolRunStateInfo = BeanUtil.copyProperties(poolRunStateInfo, new ManyThreadPoolRunStateInfo()); manyThreadPoolRunStateInfo.setIdentify(CLIENT_IDENTIFICATION_VALUE); String active = environment.getProperty("spring.profiles.active", "UNKNOWN"); manyThreadPoolRunStateInfo.setActive(active.toUpperCase()); diff --git a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/ThreadPoolStatusHandler.java b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/ThreadPoolStatusHandler.java index 9f25413a..fc9c8f2e 100644 --- a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/ThreadPoolStatusHandler.java +++ b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/state/ThreadPoolStatusHandler.java @@ -17,7 +17,7 @@ package cn.hippo4j.core.executor.state; -import cn.hutool.core.util.ReflectUtil; +import cn.hippo4j.common.toolkit.ReflectUtil; import lombok.extern.slf4j.Slf4j; import java.lang.reflect.Method; @@ -49,7 +49,7 @@ public class ThreadPoolStatusHandler { if (EXCEPTION_FLAG.get()) { try { Method runStateLessThan = ReflectUtil.getMethodByName(ThreadPoolExecutor.class, "runStateLessThan"); - cn.hippo4j.common.toolkit.ReflectUtil.setAccessible(runStateLessThan); + ReflectUtil.setAccessible(runStateLessThan); AtomicInteger ctl = (AtomicInteger) ReflectUtil.getFieldValue(executor, "ctl"); int shutdown = (int) ReflectUtil.getFieldValue(executor, "SHUTDOWN"); boolean runStateLessThanBool = ReflectUtil.invoke(executor, runStateLessThan, ctl.get(), shutdown); diff --git a/hippo4j-core/src/main/java/cn/hippo4j/core/toolkit/IdentifyUtil.java b/hippo4j-core/src/main/java/cn/hippo4j/core/toolkit/IdentifyUtil.java index a01d4924..148498e7 100644 --- a/hippo4j-core/src/main/java/cn/hippo4j/core/toolkit/IdentifyUtil.java +++ b/hippo4j-core/src/main/java/cn/hippo4j/core/toolkit/IdentifyUtil.java @@ -18,15 +18,15 @@ package cn.hippo4j.core.toolkit; import cn.hippo4j.common.config.ApplicationContextHolder; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.toolkit.ThreadUtil; import cn.hippo4j.core.toolkit.inet.InetUtils; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import org.springframework.core.env.ConfigurableEnvironment; import java.util.ArrayList; +import java.util.UUID; import static cn.hippo4j.common.constant.Constants.GROUP_KEY_DELIMITER; import static cn.hippo4j.common.constant.Constants.IDENTIFY_SLICER_SYMBOL; @@ -38,7 +38,7 @@ public class IdentifyUtil { private static String IDENTIFY; - public static final String CLIENT_IDENTIFICATION_VALUE = IdUtil.simpleUUID(); + public static final String CLIENT_IDENTIFICATION_VALUE = UUID.randomUUID().toString(); /** * Generate identify. @@ -48,16 +48,18 @@ public class IdentifyUtil { * @return */ public static synchronized String generate(ConfigurableEnvironment environment, InetUtils hippo4JInetUtils) { - if (StrUtil.isNotBlank(IDENTIFY)) { + if (StringUtil.isNotBlank(IDENTIFY)) { return IDENTIFY; } String ip = hippo4JInetUtils.findFirstNonLoopBackHostInfo().getIpAddress(); String port = environment.getProperty("server.port", "8080"); - String identification = StrUtil.builder(ip, - ":", - port, - IDENTIFY_SLICER_SYMBOL, - CLIENT_IDENTIFICATION_VALUE).toString(); + String identification = new StringBuilder() + .append(ip) + .append(":") + .append(port) + .append(IDENTIFY_SLICER_SYMBOL) + .append(CLIENT_IDENTIFICATION_VALUE) + .toString(); IDENTIFY = identification; return identification; } @@ -68,7 +70,7 @@ public class IdentifyUtil { * @return */ public static String getIdentify() { - while (StrUtil.isBlank(IDENTIFY)) { + while (StringUtil.isBlank(IDENTIFY)) { ConfigurableEnvironment environment = ApplicationContextHolder.getBean(ConfigurableEnvironment.class); InetUtils inetUtils = ApplicationContextHolder.getBean(InetUtils.class); if (environment != null && inetUtils != null) { diff --git a/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/AlarmSendMessageTest.java b/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/AlarmSendMessageTest.java index 5fee289d..a7ac1ec8 100644 --- a/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/AlarmSendMessageTest.java +++ b/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/AlarmSendMessageTest.java @@ -18,7 +18,6 @@ package cn.hippo4j.example.core.inittest; import cn.hippo4j.example.core.constant.GlobalTestConstant; -import cn.hutool.core.thread.ThreadUtil; import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage; import cn.hippo4j.core.executor.DynamicThreadPoolWrapper; import lombok.extern.slf4j.Slf4j; @@ -47,7 +46,13 @@ public class AlarmSendMessageTest { DynamicThreadPoolWrapper poolWrapper = GlobalThreadPoolManage.getExecutorService(GlobalTestConstant.MESSAGE_PRODUCE); ThreadPoolExecutor poolExecutor = poolWrapper.getExecutor(); try { - poolExecutor.execute(() -> ThreadUtil.sleep(10240124)); + poolExecutor.execute(() -> { + try { + Thread.sleep(10240124); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); } catch (Exception ex) { log.error("Throw reject policy.", ex.getMessage()); } diff --git a/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/RunStateHandlerTest.java b/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/RunStateHandlerTest.java index c6cdb011..049d6d51 100644 --- a/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/RunStateHandlerTest.java +++ b/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/RunStateHandlerTest.java @@ -17,7 +17,6 @@ package cn.hippo4j.example.core.inittest; -import cn.hutool.core.thread.ThreadUtil; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC; import org.springframework.stereotype.Component; @@ -83,7 +82,11 @@ public class RunStateHandlerTest { * When the execution of the thread pool task times out, the Trace flag is put into the MDC, and it is printed out when an alarm occurs. */ MDC.put(EXECUTE_TIMEOUT_TRACE, "39948722194639841.251.16612352194691531"); - ThreadUtil.sleep(5000); + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } for (int i = 0; i < Integer.MAX_VALUE; i++) { try { executor.execute(() -> { @@ -102,7 +105,11 @@ public class RunStateHandlerTest { }); } catch (Exception ignored) { } - ThreadUtil.sleep(500); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } }); } diff --git a/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/TaskDecoratorTest.java b/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/TaskDecoratorTest.java index 4e08a080..0d69bdcb 100644 --- a/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/TaskDecoratorTest.java +++ b/hippo4j-example/hippo4j-example-core/src/main/java/cn/hippo4j/example/core/inittest/TaskDecoratorTest.java @@ -20,7 +20,6 @@ package cn.hippo4j.example.core.inittest; import cn.hippo4j.example.core.constant.GlobalTestConstant; import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage; import cn.hippo4j.core.executor.DynamicThreadPoolWrapper; -import cn.hutool.core.thread.ThreadUtil; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC; import org.springframework.core.task.TaskDecorator; @@ -60,12 +59,14 @@ public class TaskDecoratorTest { public void taskDecoratorTest() { taskDecoratorTestExecutor.execute(() -> { MDC.put(PLACEHOLDER, "View the official website: https://www.hippo4j.cn"); - ThreadUtil.sleep(5000); - DynamicThreadPoolWrapper poolWrapper = GlobalThreadPoolManage.getExecutorService(GlobalTestConstant.MESSAGE_PRODUCE); - ThreadPoolExecutor threadPoolExecutor = poolWrapper.getExecutor(); - threadPoolExecutor.execute(() -> { - log.info("Pass context via taskDecorator MDC: {}", MDC.get(PLACEHOLDER)); - }); + try { + Thread.sleep(5000); + DynamicThreadPoolWrapper poolWrapper = GlobalThreadPoolManage.getExecutorService(GlobalTestConstant.MESSAGE_PRODUCE); + ThreadPoolExecutor threadPoolExecutor = poolWrapper.getExecutor(); + threadPoolExecutor.execute(() -> log.info("Pass context via taskDecorator MDC: {}", MDC.get(PLACEHOLDER))); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } }); } diff --git a/hippo4j-message/src/main/java/cn/hippo4j/message/platform/LarkSendMessageHandler.java b/hippo4j-message/src/main/java/cn/hippo4j/message/platform/LarkSendMessageHandler.java index 02c2a470..25600ea6 100644 --- a/hippo4j-message/src/main/java/cn/hippo4j/message/platform/LarkSendMessageHandler.java +++ b/hippo4j-message/src/main/java/cn/hippo4j/message/platform/LarkSendMessageHandler.java @@ -25,14 +25,15 @@ import cn.hippo4j.message.service.SendMessageHandler; import cn.hippo4j.message.request.AlarmNotifyRequest; import cn.hippo4j.message.request.ChangeParameterNotifyRequest; import cn.hippo4j.common.toolkit.StringUtil; -import cn.hutool.core.date.DateUtil; import cn.hippo4j.common.toolkit.FileUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpRequest; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.Objects; import java.util.stream.Collectors; @@ -66,14 +67,14 @@ public class LarkSendMessageHandler implements SendMessageHandler FileUtil.readUtf8String(larkAlarmTimoutTraceReplaceJsonKey)); if (StringUtil.isNotBlank(executeTimeoutTrace)) { String larkAlarmTimoutTraceReplaceTxt = String.format(larkAlarmTimoutTraceReplaceJson, executeTimeoutTrace); - larkAlarmTimoutReplaceTxt = StrUtil.replace(larkAlarmTimoutReplaceJson, larkAlarmTimoutTraceReplaceJson, larkAlarmTimoutTraceReplaceTxt); + larkAlarmTimoutReplaceTxt = StringUtil.replace(larkAlarmTimoutReplaceJson, larkAlarmTimoutTraceReplaceJson, larkAlarmTimoutTraceReplaceTxt); } else { - larkAlarmTimoutReplaceTxt = StrUtil.replace(larkAlarmTimoutReplaceJson, larkAlarmTimoutTraceReplaceJson, ""); + larkAlarmTimoutReplaceTxt = StringUtil.replace(larkAlarmTimoutReplaceJson, larkAlarmTimoutTraceReplaceJson, ""); } larkAlarmTimoutReplaceTxt = String.format(larkAlarmTimoutReplaceTxt, alarmNotifyRequest.getExecuteTime(), alarmNotifyRequest.getExecuteTimeOut()); - larkAlarmTxt = StrUtil.replace(larkAlarmTxt, larkAlarmTimoutReplaceJson, larkAlarmTimoutReplaceTxt); + larkAlarmTxt = StringUtil.replace(larkAlarmTxt, larkAlarmTimoutReplaceJson, larkAlarmTimoutReplaceTxt); } else { - larkAlarmTxt = StrUtil.replace(larkAlarmTxt, larkAlarmTimoutReplaceJson, ""); + larkAlarmTxt = StringUtil.replace(larkAlarmTxt, larkAlarmTimoutReplaceJson, ""); } String text = String.format(larkAlarmTxt, @@ -114,7 +115,7 @@ public class LarkSendMessageHandler implements SendMessageHandler StrUtil.startWith(receive, LARK_OPENID_PREFIX) ? String.format(LARK_AT_FORMAT_OPENID, receive) : String.format(LARK_AT_FORMAT_USERNAME, receive)) + .map(receive -> StringUtil.startWith(receive, LARK_OPENID_PREFIX) ? String.format(LARK_AT_FORMAT_OPENID, receive) : String.format(LARK_AT_FORMAT_USERNAME, receive)) .collect(Collectors.joining(" ")); } private void execute(String secretKey, String text) { String serverUrl = LARK_BOT_URL + secretKey; try { - HttpRequest.post(serverUrl).body(text).execute(); + RestTemplate template = new RestTemplate(); + template.postForObject(serverUrl, text, Object.class); } catch (Exception ex) { log.error("Lark failed to send message", ex); } diff --git a/hippo4j-message/src/main/java/cn/hippo4j/message/platform/WeChatSendMessageHandler.java b/hippo4j-message/src/main/java/cn/hippo4j/message/platform/WeChatSendMessageHandler.java index 834488d6..38bc9111 100644 --- a/hippo4j-message/src/main/java/cn/hippo4j/message/platform/WeChatSendMessageHandler.java +++ b/hippo4j-message/src/main/java/cn/hippo4j/message/platform/WeChatSendMessageHandler.java @@ -18,16 +18,16 @@ package cn.hippo4j.message.platform; import cn.hippo4j.common.toolkit.FileUtil; -import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.common.toolkit.Singleton; import cn.hippo4j.message.enums.NotifyPlatformEnum; import cn.hippo4j.message.platform.base.AbstractRobotSendMessageHandler; import cn.hippo4j.message.platform.base.RobotMessageActualContent; import cn.hippo4j.message.platform.base.RobotMessageExecuteDTO; -import cn.hutool.http.HttpRequest; import lombok.Data; import lombok.experimental.Accessors; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; import static cn.hippo4j.message.platform.constant.WeChatAlarmConstants.*; @@ -46,7 +46,7 @@ public class WeChatSendMessageHandler extends AbstractRobotSendMessageHandler { protected RobotMessageActualContent buildMessageActualContent() { String weChatAlarmTxtKey = "message/robot/dynamic-thread-pool/wechat-alarm.txt"; String weChatConfigTxtKey = "message/robot/dynamic-thread-pool/wechat-config.txt"; - RobotMessageActualContent robotMessageActualContent = RobotMessageActualContent.builder() + return RobotMessageActualContent.builder() .receiveSeparator("><@") .changeSeparator(" ➲ ") .replaceTxt(WE_CHAT_ALARM_TIMOUT_REPLACE_TXT) @@ -54,7 +54,6 @@ public class WeChatSendMessageHandler extends AbstractRobotSendMessageHandler { .alarmMessageContent(Singleton.get(weChatAlarmTxtKey, () -> FileUtil.readUtf8String(weChatAlarmTxtKey))) .configMessageContent(Singleton.get(weChatConfigTxtKey, () -> FileUtil.readUtf8String(weChatConfigTxtKey))) .build(); - return robotMessageActualContent; } @Override @@ -66,7 +65,8 @@ public class WeChatSendMessageHandler extends AbstractRobotSendMessageHandler { Markdown markdown = new Markdown(); markdown.setContent(robotMessageExecuteDTO.getText()); weChatReq.setMarkdown(markdown); - HttpRequest.post(serverUrl).body(JSONUtil.toJSONString(weChatReq)).execute(); + RestTemplate template = new RestTemplate(); + template.postForObject(serverUrl, weChatReq, Object.class); } catch (Exception ex) { log.error("WeChat failed to send message", ex); } diff --git a/hippo4j-message/src/main/java/cn/hippo4j/message/platform/base/AbstractRobotSendMessageHandler.java b/hippo4j-message/src/main/java/cn/hippo4j/message/platform/base/AbstractRobotSendMessageHandler.java index 12423ff3..284ba770 100644 --- a/hippo4j-message/src/main/java/cn/hippo4j/message/platform/base/AbstractRobotSendMessageHandler.java +++ b/hippo4j-message/src/main/java/cn/hippo4j/message/platform/base/AbstractRobotSendMessageHandler.java @@ -23,10 +23,10 @@ import cn.hippo4j.message.enums.NotifyTypeEnum; import cn.hippo4j.message.request.AlarmNotifyRequest; import cn.hippo4j.message.request.ChangeParameterNotifyRequest; import cn.hippo4j.message.service.SendMessageHandler; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; import com.google.common.base.Joiner; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Objects; /** @@ -64,15 +64,15 @@ public abstract class AbstractRobotSendMessageHandler implements SendMessageHand String executeTimeoutTrace = alarmNotifyRequest.getExecuteTimeoutTrace(); if (StringUtil.isNotBlank(executeTimeoutTrace)) { String alarmTimoutTraceReplaceTxt = String.format(traceReplaceTxt, executeTimeoutTrace); - alarmTimoutReplaceTxt = StrUtil.replace(replaceTxt, traceReplaceTxt, alarmTimoutTraceReplaceTxt); + alarmTimoutReplaceTxt = StringUtil.replace(replaceTxt, traceReplaceTxt, alarmTimoutTraceReplaceTxt); } else { - alarmTimoutReplaceTxt = StrUtil.replace(replaceTxt, traceReplaceTxt, ""); + alarmTimoutReplaceTxt = StringUtil.replace(replaceTxt, traceReplaceTxt, ""); } replaceTxt = String.format(alarmTimoutReplaceTxt, alarmNotifyRequest.getExecuteTime(), alarmNotifyRequest.getExecuteTimeOut()); } else { replaceTxt = ""; } - alarmContentTxt = StrUtil.replace(alarmContentTxt, "${timout-content}", replaceTxt); + alarmContentTxt = StringUtil.replace(alarmContentTxt, "${timout-content}", replaceTxt); String text = String.format( alarmContentTxt, // 环境 @@ -114,7 +114,7 @@ public abstract class AbstractRobotSendMessageHandler implements SendMessageHand // 报警频率 notifyConfig.getInterval(), // 当前时间 - DateUtil.now()); + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); execute(RobotMessageExecuteDTO.builder().text(text).notifyConfig(notifyConfig).build()); } @@ -158,7 +158,7 @@ public abstract class AbstractRobotSendMessageHandler implements SendMessageHand // 告警手机号 Joiner.on(robotMessageActualContent.getReceiveSeparator()).join(notifyConfig.getReceives().split(",")), // 当前时间 - DateUtil.now()); + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); execute(RobotMessageExecuteDTO.builder().text(text).notifyConfig(notifyConfig).build()); } } diff --git a/hippo4j-message/src/main/java/cn/hippo4j/message/service/AlarmControlHandler.java b/hippo4j-message/src/main/java/cn/hippo4j/message/service/AlarmControlHandler.java index 6d33522f..805dd387 100644 --- a/hippo4j-message/src/main/java/cn/hippo4j/message/service/AlarmControlHandler.java +++ b/hippo4j-message/src/main/java/cn/hippo4j/message/service/AlarmControlHandler.java @@ -18,14 +18,15 @@ package cn.hippo4j.message.service; import cn.hippo4j.common.constant.Constants; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.message.dto.AlarmControlDTO; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; @@ -34,9 +35,9 @@ import java.util.concurrent.locks.ReentrantLock; */ public class AlarmControlHandler { - private final Map threadPoolLock = Maps.newHashMap(); + private final Map threadPoolLock = new HashMap<>(); - private final Map> threadPoolAlarmCache = Maps.newConcurrentMap(); + private final Map> threadPoolAlarmCache = new ConcurrentHashMap(); /** * Control message push alarm frequency. @@ -51,14 +52,14 @@ public class AlarmControlHandler { return false; } String pkId = cache.getIfPresent(alarmControl.getTypeEnum().name()); - if (StrUtil.isBlank(pkId)) { + if (StringUtil.isBlank(pkId)) { ReentrantLock lock = threadPoolLock.get(threadPoolKey); lock.lock(); try { pkId = cache.getIfPresent(alarmControl.getTypeEnum().name()); - if (StrUtil.isBlank(pkId)) { + if (StringUtil.isBlank(pkId)) { // Val meaningless. - cache.put(alarmControl.getTypeEnum().name(), IdUtil.simpleUUID()); + cache.put(alarmControl.getTypeEnum().name(), UUID.randomUUID().toString()); return true; } } finally { @@ -76,7 +77,8 @@ public class AlarmControlHandler { * @param interval */ public void initCacheAndLock(String threadPoolId, String platform, Integer interval) { - String threadPoolKey = StrUtil.builder(threadPoolId, Constants.GROUP_KEY_DELIMITER, platform).toString(); + String threadPoolKey = threadPoolId + Constants.GROUP_KEY_DELIMITER + platform; + Cache cache = CacheBuilder.newBuilder() .expireAfterWrite(interval, TimeUnit.MINUTES) .build(); diff --git a/hippo4j-message/src/main/java/cn/hippo4j/message/service/Hippo4jBaseSendMessageService.java b/hippo4j-message/src/main/java/cn/hippo4j/message/service/Hippo4jBaseSendMessageService.java index f73de9c8..53a92fe7 100644 --- a/hippo4j-message/src/main/java/cn/hippo4j/message/service/Hippo4jBaseSendMessageService.java +++ b/hippo4j-message/src/main/java/cn/hippo4j/message/service/Hippo4jBaseSendMessageService.java @@ -17,6 +17,7 @@ package cn.hippo4j.message.service; +import cn.hippo4j.common.toolkit.CollectionUtil; import cn.hippo4j.message.api.NotifyConfigBuilder; import cn.hippo4j.common.config.ApplicationContextHolder; import cn.hippo4j.message.dto.AlarmControlDTO; @@ -24,8 +25,6 @@ import cn.hippo4j.message.dto.NotifyConfigDTO; import cn.hippo4j.message.enums.NotifyTypeEnum; import cn.hippo4j.message.request.AlarmNotifyRequest; import cn.hippo4j.message.request.ChangeParameterNotifyRequest; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.google.common.collect.Maps; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -54,9 +53,13 @@ public class Hippo4jBaseSendMessageService implements Hippo4jSendMessageService, @Override public void sendAlarmMessage(NotifyTypeEnum typeEnum, AlarmNotifyRequest alarmNotifyRequest) { String threadPoolId = alarmNotifyRequest.getThreadPoolId(); - String buildKey = StrUtil.builder(threadPoolId, "+", "ALARM").toString(); + String buildKey = new StringBuilder() + .append(threadPoolId) + .append("+") + .append("ALARM") + .toString(); List notifyList = notifyConfigs.get(buildKey); - if (CollUtil.isEmpty(notifyList)) { + if (CollectionUtil.isEmpty(notifyList)) { return; } notifyList.forEach(each -> { @@ -79,9 +82,13 @@ public class Hippo4jBaseSendMessageService implements Hippo4jSendMessageService, @Override public void sendChangeMessage(ChangeParameterNotifyRequest changeParameterNotifyRequest) { String threadPoolId = changeParameterNotifyRequest.getThreadPoolId(); - String buildKey = StrUtil.builder(threadPoolId, "+", "CONFIG").toString(); + String buildKey = new StringBuilder() + .append(threadPoolId) + .append("+") + .append("CONFIG") + .toString(); List notifyList = notifyConfigs.get(buildKey); - if (CollUtil.isEmpty(notifyList)) { + if (CollectionUtil.isEmpty(notifyList)) { log.warn("Please configure alarm notification on the server. key: [{}]", threadPoolId); return; } diff --git a/hippo4j-monitor/hippo4j-monitor-elasticsearch/src/main/java/cn/hippo4j/monitor/es/EsMonitorHandler.java b/hippo4j-monitor/hippo4j-monitor-elasticsearch/src/main/java/cn/hippo4j/monitor/es/EsMonitorHandler.java index b75a4b76..8f92a9a7 100644 --- a/hippo4j-monitor/hippo4j-monitor-elasticsearch/src/main/java/cn/hippo4j/monitor/es/EsMonitorHandler.java +++ b/hippo4j-monitor/hippo4j-monitor-elasticsearch/src/main/java/cn/hippo4j/monitor/es/EsMonitorHandler.java @@ -19,11 +19,11 @@ package cn.hippo4j.monitor.es; import cn.hippo4j.common.config.ApplicationContextHolder; import cn.hippo4j.common.model.ThreadPoolRunStateInfo; +import cn.hippo4j.common.toolkit.BeanUtil; +import cn.hippo4j.common.toolkit.FileUtil; import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.core.executor.state.ThreadPoolRunStateHandler; import cn.hippo4j.monitor.es.model.EsThreadPoolRunStateInfo; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.io.FileUtil; import cn.hippo4j.monitor.base.AbstractDynamicThreadPoolMonitor; import cn.hippo4j.monitor.base.MonitorTypeEnum; import lombok.extern.slf4j.Slf4j; @@ -40,7 +40,6 @@ import org.elasticsearch.common.xcontent.XContentType; import org.springframework.core.env.Environment; import org.springframework.util.StringUtils; -import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; @@ -61,13 +60,12 @@ public class EsMonitorHandler extends AbstractDynamicThreadPoolMonitor { @Override protected void execute(ThreadPoolRunStateInfo poolRunStateInfo) { - EsThreadPoolRunStateInfo esThreadPoolRunStateInfo = new EsThreadPoolRunStateInfo(); - BeanUtil.copyProperties(poolRunStateInfo, esThreadPoolRunStateInfo); + EsThreadPoolRunStateInfo esThreadPoolRunStateInfo = BeanUtil.copyProperties(poolRunStateInfo, new EsThreadPoolRunStateInfo()); Environment environment = ApplicationContextHolder.getInstance().getEnvironment(); String indexName = environment.getProperty("es.thread-pool-state.index.name", "thread-pool-state"); String applicationName = environment.getProperty("spring.application.name", "application"); if (!this.isExists(indexName)) { - List rawMapping = FileUtil.readLines(new File(Thread.currentThread().getContextClassLoader().getResource("mapping.json").getPath()), StandardCharsets.UTF_8); + List rawMapping = FileUtil.readLines(Thread.currentThread().getContextClassLoader().getResource("mapping.json").getPath(), StandardCharsets.UTF_8); String mapping = String.join(" ", rawMapping); // if index doesn't exsit, this function may try to create one, but recommend to create index manually. this.createIndex(indexName, "_doc", mapping, null, null, null); diff --git a/hippo4j-monitor/hippo4j-monitor-micrometer/src/main/java/cn/hippo4j/monitor/micrometer/MicrometerMonitorHandler.java b/hippo4j-monitor/hippo4j-monitor-micrometer/src/main/java/cn/hippo4j/monitor/micrometer/MicrometerMonitorHandler.java index a9ee5bbf..44dd25b0 100644 --- a/hippo4j-monitor/hippo4j-monitor-micrometer/src/main/java/cn/hippo4j/monitor/micrometer/MicrometerMonitorHandler.java +++ b/hippo4j-monitor/hippo4j-monitor-micrometer/src/main/java/cn/hippo4j/monitor/micrometer/MicrometerMonitorHandler.java @@ -19,14 +19,15 @@ package cn.hippo4j.monitor.micrometer; import cn.hippo4j.common.config.ApplicationContextHolder; import cn.hippo4j.common.model.ThreadPoolRunStateInfo; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.core.executor.state.ThreadPoolRunStateHandler; -import cn.hutool.core.bean.BeanUtil; import cn.hippo4j.monitor.base.AbstractDynamicThreadPoolMonitor; import cn.hippo4j.monitor.base.MonitorTypeEnum; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.Tag; +import org.springframework.beans.BeanUtils; import org.springframework.core.env.Environment; import java.util.Map; diff --git a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/notify/CoreNotifyConfigBuilder.java b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/notify/CoreNotifyConfigBuilder.java index e4ae0a30..220051ed 100644 --- a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/notify/CoreNotifyConfigBuilder.java +++ b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/notify/CoreNotifyConfigBuilder.java @@ -25,7 +25,6 @@ import cn.hippo4j.config.springboot.starter.config.NotifyPlatformProperties; import cn.hippo4j.message.service.AlarmControlHandler; import cn.hippo4j.message.dto.NotifyConfigDTO; import cn.hippo4j.message.api.NotifyConfigBuilder; -import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.AllArgsConstructor; @@ -33,6 +32,7 @@ import lombok.extern.slf4j.Slf4j; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -114,7 +114,7 @@ public class CoreNotifyConfigBuilder implements NotifyConfigBuilder { public void initCacheAndLock(Map> buildSingleNotifyConfig) { buildSingleNotifyConfig.forEach( (key, val) -> val.stream() - .filter(each -> StrUtil.equals("ALARM", each.getType())) + .filter(each -> Objects.equals("ALARM", each.getType())) .forEach(each -> alarmControlHandler.initCacheAndLock(each.getTpId(), each.getPlatform(), each.getInterval()))); } diff --git a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/BootstrapConfigPropertiesBinderAdapt.java b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/BootstrapConfigPropertiesBinderAdapt.java index 433c6535..957e4fd6 100644 --- a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/BootstrapConfigPropertiesBinderAdapt.java +++ b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/BootstrapConfigPropertiesBinderAdapt.java @@ -17,14 +17,13 @@ package cn.hippo4j.config.springboot.starter.refresher; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.common.toolkit.CollectionUtil; import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.config.springboot.starter.config.BootstrapConfigProperties; import cn.hippo4j.config.springboot.starter.config.DynamicThreadPoolNotifyProperties; import cn.hippo4j.config.springboot.starter.config.ExecutorProperties; import cn.hippo4j.config.springboot.starter.config.NotifyPlatformProperties; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.bean.copier.CopyOptions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.springframework.boot.context.properties.bind.Bindable; @@ -131,10 +130,10 @@ public class BootstrapConfigPropertiesBinderAdapt { break; } if (CollectionUtil.isNotEmpty(executorSingleMap)) { - ExecutorProperties executorProperties = BeanUtil.mapToBean(executorSingleMap, ExecutorProperties.class, true, CopyOptions.create()); + ExecutorProperties executorProperties = BeanUtil.mapToBean(executorSingleMap, ExecutorProperties.class, true); if (executorProperties != null) { if (CollectionUtil.isNotEmpty(notifySingleMap)) { - DynamicThreadPoolNotifyProperties alarm = BeanUtil.mapToBean(notifySingleMap, DynamicThreadPoolNotifyProperties.class, true, CopyOptions.create()); + DynamicThreadPoolNotifyProperties alarm = BeanUtil.mapToBean(notifySingleMap, DynamicThreadPoolNotifyProperties.class, true); alarm.setReceives(alarm.getReceives()); executorProperties.setNotify(alarm); } @@ -142,7 +141,7 @@ public class BootstrapConfigPropertiesBinderAdapt { } } if (CollectionUtil.isNotEmpty(platformSingleMap)) { - NotifyPlatformProperties notifyPlatformProperties = BeanUtil.mapToBean(platformSingleMap, NotifyPlatformProperties.class, true, CopyOptions.create()); + NotifyPlatformProperties notifyPlatformProperties = BeanUtil.mapToBean(platformSingleMap, NotifyPlatformProperties.class, true); if (notifyPlatformProperties != null) { notifyPropertiesList.add(notifyPlatformProperties); } diff --git a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/event/AdapterExecutorsRefreshListener.java b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/event/AdapterExecutorsRefreshListener.java index 552a1f69..d4b36ce0 100644 --- a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/event/AdapterExecutorsRefreshListener.java +++ b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/event/AdapterExecutorsRefreshListener.java @@ -20,11 +20,12 @@ package cn.hippo4j.config.springboot.starter.refresher.event; import cn.hippo4j.adapter.base.ThreadPoolAdapter; import cn.hippo4j.adapter.base.ThreadPoolAdapterParameter; import cn.hippo4j.common.config.ApplicationContextHolder; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.common.toolkit.CollectionUtil; import cn.hippo4j.config.springboot.starter.config.AdapterExecutorProperties; import cn.hippo4j.config.springboot.starter.support.DynamicThreadPoolAdapterRegister; -import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.core.annotation.Order; import java.util.List; @@ -63,7 +64,7 @@ public class AdapterExecutorsRefreshListener extends AbstractRefreshListener { if (Objects.equals(val.mark(), each.getMark())) { - val.updateThreadPool(BeanUtil.toBean(each, ThreadPoolAdapterParameter.class)); + val.updateThreadPool(BeanUtil.copyProperties(each, new ThreadPoolAdapterParameter())); DynamicThreadPoolAdapterRegister.ADAPTER_EXECUTORS_MAP.put(buildKey, each); } }); diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/config/DiscoveryConfiguration.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/config/DiscoveryConfiguration.java index 255a28e1..f46f102b 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/config/DiscoveryConfiguration.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/config/DiscoveryConfiguration.java @@ -24,7 +24,6 @@ import cn.hippo4j.core.toolkit.inet.InetUtils; import cn.hippo4j.springboot.starter.toolkit.CloudCommonIdUtil; import cn.hippo4j.springboot.starter.core.DiscoveryClient; import cn.hippo4j.springboot.starter.remote.HttpAgent; -import cn.hutool.core.text.StrBuilder; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import org.springframework.context.annotation.Bean; @@ -57,7 +56,11 @@ public class DiscoveryConfiguration { String active = environment.getProperty("spring.profiles.active", "UNKNOWN"); InstanceInfo instanceInfo = new InstanceInfo(); String instanceId = CloudCommonIdUtil.getDefaultInstanceId(environment, hippo4JInetUtils); - instanceId = StrBuilder.create().append(instanceId).append(IDENTIFY_SLICER_SYMBOL).append(CLIENT_IDENTIFICATION_VALUE).toString(); + instanceId = new StringBuilder() + .append(instanceId) + .append(IDENTIFY_SLICER_SYMBOL) + .append(CLIENT_IDENTIFICATION_VALUE) + .toString(); String contextPath = environment.getProperty("server.servlet.context-path", ""); instanceInfo.setInstanceId(instanceId) .setIpApplicationName(CloudCommonIdUtil.getIpApplicationName(environment, hippo4JInetUtils)) diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/ClientWorker.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/ClientWorker.java index 9ffb4908..9dee01de 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/ClientWorker.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/ClientWorker.java @@ -25,18 +25,12 @@ import cn.hippo4j.common.web.base.Result; import cn.hippo4j.core.executor.support.ThreadFactoryBuilder; import cn.hippo4j.springboot.starter.remote.HttpAgent; import cn.hippo4j.springboot.starter.remote.ServerHealthCheck; -import cn.hutool.core.util.IdUtil; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.util.StringUtils; import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executors; @@ -158,7 +152,7 @@ public class ClientWorker { public List checkUpdateTpIds(String probeUpdateString, boolean isInitializingCacheList) { Map params = new HashMap(2); params.put(PROBE_MODIFY_REQUEST, probeUpdateString); - params.put(WEIGHT_CONFIGS, IdUtil.simpleUUID()); + params.put(WEIGHT_CONFIGS, UUID.randomUUID().toString()); Map headers = new HashMap(2); headers.put(LONG_PULLING_TIMEOUT, "" + timeout); // Confirm the identity of the client, and can be modified separately when modifying the thread pool configuration. diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/DiscoveryClient.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/DiscoveryClient.java index f9e8824a..9655f4ac 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/DiscoveryClient.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/DiscoveryClient.java @@ -26,11 +26,10 @@ import cn.hippo4j.common.web.base.Results; import cn.hippo4j.common.web.exception.ErrorCodeEnum; import cn.hippo4j.core.executor.support.ThreadFactoryBuilder; import cn.hippo4j.springboot.starter.remote.HttpAgent; -import cn.hutool.core.text.StrBuilder; -import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.DisposableBean; +import java.util.Objects; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -93,7 +92,7 @@ public class DiscoveryClient implements DisposableBean { String clientCloseUrlPath = Constants.BASE_PATH + "/client/close"; Result clientCloseResult; try { - String groupKeyIp = StrBuilder.create() + String groupKeyIp = new StringBuilder() .append(instanceInfo.getGroupKey()) .append(Constants.GROUP_KEY_DELIMITER) .append(instanceInfo.getIdentify()) @@ -133,7 +132,7 @@ public class DiscoveryClient implements DisposableBean { .setLastDirtyTimestamp(instanceInfo.getLastDirtyTimestamp().toString()) .setStatus(instanceInfo.getStatus().toString()); renewResult = httpAgent.httpPostByDiscovery(BASE_PATH + "/apps/renew", instanceRenew); - if (StrUtil.equals(ErrorCodeEnum.NOT_FOUND.getCode(), renewResult.getCode())) { + if (Objects.equals(ErrorCodeEnum.NOT_FOUND.getCode(), renewResult.getCode())) { long timestamp = instanceInfo.setIsDirtyWithTime(); boolean success = register(); // TODO Abstract server registration logic diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/ReportingEventExecutor.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/ReportingEventExecutor.java index b4d5706b..9fc3c50d 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/ReportingEventExecutor.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/ReportingEventExecutor.java @@ -32,7 +32,6 @@ import cn.hippo4j.springboot.starter.config.BootstrapProperties; import cn.hippo4j.springboot.starter.monitor.collect.Collector; import cn.hippo4j.springboot.starter.monitor.send.MessageSender; import cn.hippo4j.springboot.starter.remote.ServerHealthCheck; -import cn.hutool.core.collection.CollUtil; import com.google.common.collect.Lists; import lombok.NonNull; import lombok.RequiredArgsConstructor; @@ -166,7 +165,7 @@ public class ReportingEventExecutor implements Runnable, CommandLineRunner, Disp */ private void runTimeGatherTask() { boolean healthStatus = serverHealthCheck.isHealthStatus(); - if (!healthStatus || CollUtil.isEmpty(collectors)) { + if (!healthStatus || CollectionUtil.isEmpty(collectors)) { return; } collectors.forEach((beanName, collector) -> { diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/collect/RunTimeInfoCollector.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/collect/RunTimeInfoCollector.java index d38b3ed6..81d7d010 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/collect/RunTimeInfoCollector.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/monitor/collect/RunTimeInfoCollector.java @@ -22,10 +22,10 @@ import cn.hippo4j.common.monitor.AbstractMessage; import cn.hippo4j.common.monitor.Message; import cn.hippo4j.common.monitor.MessageTypeEnum; import cn.hippo4j.common.monitor.RuntimeMessage; +import cn.hippo4j.common.toolkit.BeanUtil; import cn.hippo4j.springboot.starter.config.BootstrapProperties; import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage; import cn.hippo4j.core.executor.state.AbstractThreadPoolRuntime; -import cn.hutool.core.bean.BeanUtil; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; @@ -48,7 +48,7 @@ public class RunTimeInfoCollector extends AbstractThreadPoolRuntime implements C List listThreadPoolId = GlobalThreadPoolManage.listThreadPoolId(); for (String each : listThreadPoolId) { ThreadPoolRunStateInfo poolRunState = getPoolRunState(each); - RuntimeMessage runtimeMessage = BeanUtil.toBean(poolRunState, RuntimeMessage.class); + RuntimeMessage runtimeMessage = BeanUtil.copyProperties(poolRunState, new RuntimeMessage()); runtimeMessage.setGroupKey(getThreadPoolIdentify(each, properties.getItemId(), properties.getNamespace())); runtimeMessages.add(runtimeMessage); } diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/notify/ServerNotifyConfigBuilder.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/notify/ServerNotifyConfigBuilder.java index 4065b27c..bd6cf738 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/notify/ServerNotifyConfigBuilder.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/notify/ServerNotifyConfigBuilder.java @@ -17,6 +17,7 @@ package cn.hippo4j.springboot.starter.notify; +import cn.hippo4j.common.toolkit.CollectionUtil; import cn.hippo4j.common.toolkit.GroupKey; import cn.hippo4j.common.toolkit.JSONUtil; import cn.hippo4j.common.web.base.Result; @@ -28,8 +29,6 @@ import cn.hippo4j.message.api.NotifyConfigBuilder; import cn.hippo4j.message.request.ThreadPoolNotifyRequest; import cn.hippo4j.springboot.starter.config.BootstrapProperties; import cn.hippo4j.springboot.starter.remote.HttpAgent; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.AllArgsConstructor; @@ -37,6 +36,7 @@ import lombok.extern.slf4j.Slf4j; import java.util.List; import java.util.Map; +import java.util.Objects; import static cn.hippo4j.common.constant.Constants.BASE_PATH; @@ -56,7 +56,7 @@ public class ServerNotifyConfigBuilder implements NotifyConfigBuilder { @Override public Map> buildNotify() { List threadPoolIds = GlobalThreadPoolManage.listThreadPoolId(); - if (CollUtil.isEmpty(threadPoolIds)) { + if (CollectionUtil.isEmpty(threadPoolIds)) { log.warn("The client does not have a dynamic thread pool instance configured."); return Maps.newHashMap(); } @@ -81,7 +81,7 @@ public class ServerNotifyConfigBuilder implements NotifyConfigBuilder { List resultData = JSONUtil.parseArray(resultDataStr, ThreadPoolNotifyDTO.class); resultData.forEach(each -> resultMap.put(each.getNotifyKey(), each.getNotifyList())); - resultMap.forEach((key, val) -> val.stream().filter(each -> StrUtil.equals("ALARM", each.getType())) + resultMap.forEach((key, val) -> val.stream().filter(each -> Objects.equals("ALARM", each.getType())) .forEach(each -> alarmControlHandler.initCacheAndLock(each.getTpId(), each.getPlatform(), each.getInterval()))); } return resultMap; diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/remote/ServerHttpAgent.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/remote/ServerHttpAgent.java index 9cd62075..71e0f1d4 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/remote/ServerHttpAgent.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/remote/ServerHttpAgent.java @@ -19,12 +19,12 @@ package cn.hippo4j.springboot.starter.remote; import cn.hippo4j.common.config.ApplicationContextHolder; import cn.hippo4j.common.constant.Constants; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.web.base.Result; import cn.hippo4j.springboot.starter.config.BootstrapProperties; import cn.hippo4j.springboot.starter.security.SecurityProxy; import cn.hippo4j.springboot.starter.toolkit.HttpClientUtil; import cn.hippo4j.core.executor.support.ThreadFactoryBuilder; -import cn.hutool.core.util.StrUtil; import com.google.common.collect.Maps; import java.util.Map; @@ -133,7 +133,7 @@ public class ServerHttpAgent implements HttpAgent { } private Map injectSecurityInfo(Map params) { - if (StrUtil.isNotBlank(securityProxy.getAccessToken())) { + if (StringUtil.isNotBlank(securityProxy.getAccessToken())) { params.put(Constants.ACCESS_TOKEN, securityProxy.getAccessToken()); } return params; diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/remote/ServerListManager.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/remote/ServerListManager.java index f3d72823..5166cd9b 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/remote/ServerListManager.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/remote/ServerListManager.java @@ -17,8 +17,8 @@ package cn.hippo4j.springboot.starter.remote; +import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.springboot.starter.config.BootstrapProperties; -import cn.hutool.core.util.StrUtil; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.util.StringUtils; @@ -56,7 +56,7 @@ public class ServerListManager { List serverAddrList = new ArrayList(); String[] serverAddrListArr = this.serverAddrsStr.split(","); for (String serverAddr : serverAddrListArr) { - boolean whetherJoint = StrUtil.isNotBlank(serverAddr) + boolean whetherJoint = StringUtil.isNotBlank(serverAddr) && !serverAddr.startsWith(HTTPS) && !serverAddr.startsWith(HTTP); if (whetherJoint) { serverAddr = HTTP + serverAddr;