完善 solon 适配的 LiteflowMethod 处理

This commit is contained in:
noear
2024-09-02 16:13:58 +08:00
parent dcd8bac152
commit 17697fcc12
6 changed files with 64 additions and 12 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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());
}