diff --git a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/Caller.java b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/Caller.java index db240d06c..5c48eed6b 100644 --- a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/Caller.java +++ b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/Caller.java @@ -1,7 +1,5 @@ package com.aizuda.easy.retry.common.log.lang; -import cn.hutool.core.lang.caller.CallerUtil; - /** * 调用者接口
* 可以通过此接口的实现类方法获取调用者、多级调用者以及判断是否被调用 @@ -10,12 +8,6 @@ import cn.hutool.core.lang.caller.CallerUtil; * */ public interface Caller { - /** - * 获得调用者 - * - * @return 调用者 - */ - Class getCaller(); /** * 获得调用者的调用者 @@ -24,26 +16,4 @@ public interface Caller { */ Class getCallerCaller(); - /** - * 获得调用者,指定第几级调用者 调用者层级关系: - * - *
-	 * 0 {@link cn.hutool.core.lang.caller.CallerUtil}
-	 * 1 调用{@link cn.hutool.core.lang.caller.CallerUtil}中方法的类
-	 * 2 调用者的调用者
-	 * ...
-	 * 
- * - * @param depth 层级。0表示{@link cn.hutool.core.lang.caller.CallerUtil}本身,1表示调用{@link CallerUtil}的类,2表示调用者的调用者,依次类推 - * @return 第几级调用者 - */ - Class getCaller(int depth); - - /** - * 是否被指定类调用 - * - * @param clazz 调用者类 - * @return 是否被调用 - */ - boolean isCalledBy(Class clazz); } diff --git a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/LogCaller.java b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/LogCaller.java index 4f6abb1c3..b0edbf376 100644 --- a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/LogCaller.java +++ b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/LogCaller.java @@ -1,5 +1,7 @@ package com.aizuda.easy.retry.common.log.lang; +import java.util.Objects; + /** * 调用者。可以通过此类的方法获取调用者、多级调用者以及判断是否被调用 * @@ -12,15 +14,6 @@ public class LogCaller { INSTANCE = tryCreateCaller(); } - /** - * 获得调用者 - * - * @return 调用者 - */ - public static Class getCaller() { - return INSTANCE.getCaller(); - } - /** * 获得调用者的调用者 * @@ -30,51 +23,6 @@ public class LogCaller { return INSTANCE.getCallerCaller(); } - /** - * 获得调用者,指定第几级调用者
- * 调用者层级关系: - * - *
-     * 0 CallerUtil
-     * 1 调用CallerUtil中方法的类
-     * 2 调用者的调用者
-     * ...
-     * 
- * - * @param depth 层级。0表示CallerUtil本身,1表示调用CallerUtil的类,2表示调用者的调用者,依次类推 - * @return 第几级调用者 - */ - public static Class getCaller(int depth) { - return INSTANCE.getCaller(depth); - } - - /** - * 是否被指定类调用 - * - * @param clazz 调用者类 - * @return 是否被调用 - */ - public static boolean isCalledBy(Class clazz) { - return INSTANCE.isCalledBy(clazz); - } - - /** - * 获取调用此方法的方法名 - * - * @param isFullName 是否返回全名,全名包括方法所在类的全路径名 - * @return 调用此方法的方法名 - * @since 5.2.4 - */ - public static String getCallerMethodName(boolean isFullName) { - final StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[2]; - final String methodName = stackTraceElement.getMethodName(); - if (false == isFullName) { - return methodName; - } - - return stackTraceElement.getClassName() + "." + methodName; - } - /** * 尝试创建{@link Caller}实现 * @@ -84,7 +32,7 @@ public class LogCaller { Caller caller; try { caller = new StackWalkerCaller(); - if (null != caller.getCaller() && null != caller.getCallerCaller()) { + if (Objects.nonNull(caller.getCallerCaller())) { return caller; } } catch (Throwable e) { @@ -94,5 +42,4 @@ public class LogCaller { caller = new StackTraceCaller(); return caller; } - // ---------------------------------------------------------------------------------------------- static interface and class } diff --git a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/StackTraceCaller.java b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/StackTraceCaller.java index b2790dedf..181f29c44 100644 --- a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/StackTraceCaller.java +++ b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/StackTraceCaller.java @@ -2,6 +2,7 @@ package com.aizuda.easy.retry.common.log.lang; import cn.hutool.core.exceptions.UtilException; +import java.io.Serial; import java.io.Serializable; /** @@ -10,23 +11,10 @@ import java.io.Serializable; * @author wodeyangzipingpingwuqi */ public class StackTraceCaller implements Caller, Serializable { + @Serial private static final long serialVersionUID = 1L; private static final int OFFSET = 2; - @Override - public Class getCaller() { - final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); - if (OFFSET + 1 >= stackTrace.length) { - return null; - } - final String className = stackTrace[OFFSET + 1].getClassName(); - try { - return Class.forName(className); - } catch (ClassNotFoundException e) { - throw new UtilException(e, "[{}] not found!", className); - } - } - @Override public Class getCallerCaller() { final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); @@ -41,28 +29,4 @@ public class StackTraceCaller implements Caller, Serializable { } } - @Override - public Class getCaller(int depth) { - final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); - if (OFFSET + depth >= stackTrace.length) { - return null; - } - final String className = stackTrace[OFFSET + depth].getClassName(); - try { - return Class.forName(className); - } catch (ClassNotFoundException e) { - throw new UtilException(e, "[{}] not found!", className); - } - } - - @Override - public boolean isCalledBy(Class clazz) { - final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); - for (final StackTraceElement element : stackTrace) { - if (element.getClassName().equals(clazz.getName())) { - return true; - } - } - return false; - } } diff --git a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/StackWalkerCaller.java b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/StackWalkerCaller.java index 07c967fd5..08fea0aa3 100644 --- a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/StackWalkerCaller.java +++ b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/lang/StackWalkerCaller.java @@ -2,6 +2,7 @@ package com.aizuda.easy.retry.common.log.lang; import cn.hutool.core.exceptions.UtilException; +import java.io.Serial; import java.io.Serializable; import java.util.function.Function; import java.util.stream.Stream; @@ -12,27 +13,17 @@ import java.util.stream.Stream; * @since 2.6.0 */ public class StackWalkerCaller implements Caller, Serializable { + @Serial + private static final long serialVersionUID = 1L; - @Override - public Class getCaller() { - StackWalker instance = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); - StackWalker.StackFrame walk = (StackWalker.StackFrame) instance - .walk((Function, Object>) stackFrameStream -> - stackFrameStream.skip(2).findFirst().get()); - try { - return Class.forName(walk.getClassName()); - } catch (ClassNotFoundException e) { - throw new UtilException(e, "[{}] not found!", walk.getClassName()); - } - } - + private static final int OFFSET = 2; @Override public Class getCallerCaller() { StackWalker instance = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); StackWalker.StackFrame walk = (StackWalker.StackFrame) instance .walk((Function, Object>) stackFrameStream -> - stackFrameStream.skip(3).findFirst().get()); + stackFrameStream.skip(OFFSET + 1).findFirst().get()); try { return Class.forName(walk.getClassName()); } catch (ClassNotFoundException e) { @@ -40,13 +31,4 @@ public class StackWalkerCaller implements Caller, Serializable { } } - @Override - public Class getCaller(int depth) { - return null; - } - - @Override - public boolean isCalledBy(Class clazz) { - return false; - } } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/WorkflowNodeController.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/WorkflowNodeController.java new file mode 100644 index 000000000..4f9ac4848 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/WorkflowNodeController.java @@ -0,0 +1,30 @@ +package com.aizuda.easy.retry.server.web.controller; + +import com.aizuda.easy.retry.server.web.service.WorkflowNodeService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author xiaowoniu + * @date 2023-12-23 17:47:51 + * @since 2.6.0 + */ +@RestController +@RequestMapping("/workflow/node") +@RequiredArgsConstructor +public class WorkflowNodeController { + private final WorkflowNodeService workflowNodeService; + + @PostMapping("/stop/{id}") + public Boolean stop(@PathVariable("id") Long id) { + return workflowNodeService.stop(id); + } + + @PostMapping("/retry/{id}") + public Boolean retry(@PathVariable("id") Long id) { + return workflowNodeService.retry(id); + } +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/WorkflowNodeService.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/WorkflowNodeService.java new file mode 100644 index 000000000..e62e3b7ef --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/WorkflowNodeService.java @@ -0,0 +1,12 @@ +package com.aizuda.easy.retry.server.web.service; + +/** + * @author xiaowoniu + * @date 2024-02-03 21:24:52 + * @since 2.6.0 + */ +public interface WorkflowNodeService { + Boolean stop(Long id); + + Boolean retry(Long id); +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowNodeServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowNodeServiceImpl.java new file mode 100644 index 000000000..50378b164 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/WorkflowNodeServiceImpl.java @@ -0,0 +1,22 @@ +package com.aizuda.easy.retry.server.web.service.impl; + +import com.aizuda.easy.retry.server.web.service.WorkflowNodeService; +import org.springframework.stereotype.Service; + +/** + * @author xiaowoniu + * @date 2024-02-03 21:25:00 + * @since 2.6.0 + */ +@Service +public class WorkflowNodeServiceImpl implements WorkflowNodeService { + @Override + public Boolean stop(Long id) { + return null; + } + + @Override + public Boolean retry(Long id) { + return null; + } +}