mirror of
https://gitee.com/dromara/liteFlow.git
synced 2026-05-20 08:58:09 +08:00
53 lines
1.5 KiB
Java
53 lines
1.5 KiB
Java
package com.yomahub.liteflow.solon;
|
|
|
|
import com.yomahub.liteflow.core.NodeBooleanComponent;
|
|
import com.yomahub.liteflow.enums.LiteFlowMethodEnum;
|
|
import com.yomahub.liteflow.exception.LiteFlowException;
|
|
import org.noear.solon.core.BeanWrap;
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
/**
|
|
* @author noear
|
|
* @since 1.11
|
|
*/
|
|
public class NodeBooleanComponentOfMethod extends NodeBooleanComponent {
|
|
|
|
private final BeanWrap beanWrap;
|
|
|
|
private final Method method;
|
|
|
|
private final LiteFlowMethodEnum methodEnum;
|
|
|
|
public NodeBooleanComponentOfMethod(BeanWrap beanWrap, Method method, LiteFlowMethodEnum methodEnum) {
|
|
this.beanWrap = beanWrap;
|
|
this.method = method;
|
|
this.methodEnum = methodEnum;
|
|
|
|
if (method.getParameterCount() > 1) {
|
|
String methodFullName = beanWrap.clz().getName() + "::" + method.getName();
|
|
throw new LiteFlowException("NodeIfComponent method parameter cannot be more than one: " + methodFullName);
|
|
}
|
|
|
|
if (method.getReturnType() != Boolean.class && method.getReturnType() != boolean.class) {
|
|
String methodFullName = beanWrap.clz().getName() + "::" + method.getName();
|
|
throw new LiteFlowException("NodeIfComponent method returnType can only be boolean: " + methodFullName);
|
|
}
|
|
}
|
|
|
|
private Object exec() throws Exception {
|
|
if (method.getParameterCount() == 0) {
|
|
return method.invoke(beanWrap.get());
|
|
}
|
|
else {
|
|
return method.invoke(beanWrap.get(), this);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean processBoolean() throws Exception {
|
|
return (boolean) exec();
|
|
}
|
|
|
|
}
|