提交 5088737b authored 作者: 黄承天's avatar 黄承天

api调用参数由指定类对象改为指定类名

上级 aecc2407
......@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class Parameter {
private Class<?> clz;
private String className;
private Object obj;
......
......@@ -6,6 +6,7 @@ import com.tykj.workflowcore.api.entity.ApiInfo;
import com.tykj.workflowcore.api.entity.ClassInfo;
import com.tykj.workflowcore.api.entity.EntityInfo;
import com.tykj.workflowcore.api.entity.Parameter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.io.File;
......@@ -17,7 +18,10 @@ import java.net.URL;
import java.util.*;
import java.util.stream.Collectors;
import static java.lang.String.format;
@Slf4j
@Service
public class ApiService {
......@@ -122,9 +126,10 @@ public class ApiService {
*/
public Object invoke(String className, String apiName, List<Parameter> parameters) {
try {
Class<?> clz = Class.forName(className);
Class<?> clz = getClass(className);
Class<?>[] parameterTypes = parameters.stream()
.map(Parameter::getClz)
.map(Parameter::getClassName)
.map(this::getClass)
.toArray(Class[]::new);
Method method = clz.getMethod(apiName, parameterTypes);
Object bean = springBeanService.getBean(clz);
......@@ -132,12 +137,21 @@ public class ApiService {
.map(Parameter::getObj)
.toArray();
return method.invoke(bean, params);
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
} catch (RuntimeException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
return null;
}
}
private Class<?> getClass(String className) {
try {
return Class.forName(className);
} catch (ClassNotFoundException e) {
log.error(format("未能找到该类:%s", className));
throw new RuntimeException();
}
}
//通过loader加载所有类
private List<Class<?>> loadClassByLoader(ClassLoader load) {
List<Class<?>> classes = new ArrayList<>();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论