mirror of
https://gitee.com/dromara/liteFlow.git
synced 2026-05-14 04:02:09 +08:00
完善 solon 适配的 LiteflowMethod 处理
This commit is contained in:
@@ -13,11 +13,11 @@ import java.lang.reflect.Method;
|
||||
*/
|
||||
public class NodeBooleanComponentOfMethod extends NodeBooleanComponent {
|
||||
|
||||
final BeanWrap beanWrap;
|
||||
private final BeanWrap beanWrap;
|
||||
|
||||
final Method method;
|
||||
private final Method method;
|
||||
|
||||
final LiteFlowMethodEnum methodEnum;
|
||||
private final LiteFlowMethodEnum methodEnum;
|
||||
|
||||
public NodeBooleanComponentOfMethod(BeanWrap beanWrap, Method method, LiteFlowMethodEnum methodEnum) {
|
||||
this.beanWrap = beanWrap;
|
||||
|
||||
@@ -14,11 +14,11 @@ import java.lang.reflect.Method;
|
||||
*/
|
||||
public class NodeComponentOfMethod extends NodeComponent {
|
||||
|
||||
final BeanWrap beanWrap;
|
||||
private final BeanWrap beanWrap;
|
||||
|
||||
final Method method;
|
||||
private final Method method;
|
||||
|
||||
final LiteFlowMethodEnum methodEnum;
|
||||
private final LiteFlowMethodEnum methodEnum;
|
||||
|
||||
public NodeComponentOfMethod(BeanWrap beanWrap, Method method, LiteFlowMethodEnum methodEnum) {
|
||||
this.beanWrap = beanWrap;
|
||||
|
||||
@@ -13,11 +13,11 @@ import java.lang.reflect.Method;
|
||||
*/
|
||||
public class NodeForComponentOfMethod extends NodeForComponent {
|
||||
|
||||
final BeanWrap beanWrap;
|
||||
private final BeanWrap beanWrap;
|
||||
|
||||
final Method method;
|
||||
private final Method method;
|
||||
|
||||
final LiteFlowMethodEnum methodEnum;
|
||||
private final LiteFlowMethodEnum methodEnum;
|
||||
|
||||
public NodeForComponentOfMethod(BeanWrap beanWrap, Method method, LiteFlowMethodEnum methodEnum) {
|
||||
this.beanWrap = beanWrap;
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.yomahub.liteflow.solon;
|
||||
|
||||
import com.yomahub.liteflow.core.NodeIteratorComponent;
|
||||
import com.yomahub.liteflow.enums.LiteFlowMethodEnum;
|
||||
import com.yomahub.liteflow.exception.LiteFlowException;
|
||||
import org.noear.solon.core.BeanWrap;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Iterator;
|
||||
|
||||
/**
|
||||
* @author noear
|
||||
*/
|
||||
public class NodeIteratorComponentOfMethod extends NodeIteratorComponent {
|
||||
private final BeanWrap beanWrap;
|
||||
|
||||
private final Method method;
|
||||
|
||||
private final LiteFlowMethodEnum methodEnum;
|
||||
|
||||
public NodeIteratorComponentOfMethod(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() != Iterator.class) {
|
||||
String methodFullName = beanWrap.clz().getName() + "::" + method.getName();
|
||||
throw new LiteFlowException("NodeIfComponent method returnType can only be iterator: " + methodFullName);
|
||||
}
|
||||
}
|
||||
|
||||
private Object exec() throws Exception {
|
||||
if (method.getParameterCount() == 0) {
|
||||
return method.invoke(beanWrap.get());
|
||||
} else {
|
||||
return method.invoke(beanWrap.get(), this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<?> processIterator() throws Exception {
|
||||
return (Iterator<?>) exec();
|
||||
}
|
||||
}
|
||||
@@ -13,11 +13,11 @@ import java.lang.reflect.Method;
|
||||
*/
|
||||
public class NodeSwitchComponentOfMethod extends NodeSwitchComponent {
|
||||
|
||||
final BeanWrap beanWrap;
|
||||
private final BeanWrap beanWrap;
|
||||
|
||||
final Method method;
|
||||
private final Method method;
|
||||
|
||||
final LiteFlowMethodEnum methodEnum;
|
||||
private final LiteFlowMethodEnum methodEnum;
|
||||
|
||||
public NodeSwitchComponentOfMethod(BeanWrap beanWrap, Method method, LiteFlowMethodEnum methodEnum) {
|
||||
this.beanWrap = beanWrap;
|
||||
|
||||
@@ -64,6 +64,9 @@ public class XPluginImpl implements Plugin {
|
||||
case PROCESS_FOR:
|
||||
node1 = new NodeForComponentOfMethod(bw, method, anno.value());
|
||||
break;
|
||||
case PROCESS_ITERATOR:
|
||||
node1 = new NodeIteratorComponentOfMethod(bw, method, anno.value());
|
||||
break;
|
||||
default:
|
||||
node1 = new NodeComponentOfMethod(bw, method, anno.value());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user