master
Qin Dong Ming 2024-09-08 20:50:40 +08:00
parent 996d5e33d6
commit af1685f245
2 changed files with 44 additions and 31 deletions

View File

@ -1,5 +1,6 @@
package com.muyu; package com.muyu;
import com.muyu.domain.EngineVersion;
import com.muyu.handler.DataEngineHandler; import com.muyu.handler.DataEngineHandler;
public interface BasicEngine<V> { public interface BasicEngine<V> {
@ -14,4 +15,5 @@ public interface BasicEngine<V> {
public void execution(); public void execution();
} }

View File

@ -15,7 +15,7 @@ import com.muyu.req.EngineVersionListResp;
import com.muyu.service.EngIneService; import com.muyu.service.EngIneService;
import com.muyu.service.EngineVersionService; import com.muyu.service.EngineVersionService;
import com.muyu.test.ExternalClassLoader; import com.muyu.test.ExternalClassLoader;
import jakarta.validation.Path; import com.muyu.test.TestService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -23,8 +23,10 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.net.URL; import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.List; import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import static com.muyu.test.RuleTest.engineWorkSourcePath; import static com.muyu.test.RuleTest.engineWorkSourcePath;
@ -45,38 +47,47 @@ public class EngIneServiceImpl extends ServiceImpl<EngineMapper, EngineMaintenan
@Autowired @Autowired
private EngineVersionService engineConfigService; private EngineVersionService engineConfigService;
public static final String packagePath = "com.muyu.test";
public static final ConcurrentHashMap<Object, Object> engineMap = new ConcurrentHashMap<Object, Object>();
private static final String objectPath = "com.muyu.test";
@Override @Override
public Object measurementList(EngineVersion engineVersion) { public Object measurementList(EngineVersion engineVersion) {
// EngineVersion dataValue = engineVersion; EngineVersion dataValue = engineVersion;
// String versionClass = engineVersion.getVersionClass(); String versionClass = engineVersion.getVersionClass();
// CompileService.test(engineVersion.getVersionCode(), engineVersion.getVersionClass()); TestService.test(engineVersion);
// try { try {
// //外部类文件路径 //外部类文件路径
// String externalClassFilePath = engineWorkSourcePath + "/" + objectPath + "/" + versionClass + ".class"; String externalClassFilePath = engineWorkSourcePath + "/" + objectPath + "/" + versionClass + ".class";
// Path classFilePath = Paths.get(externalClassFilePath); Path classFilePath = Paths.get(externalClassFilePath);
// //获取外部类所在的目录 //获取外部类所在的目录
// String externalClassDir = externalClassFilePath.substring(0, externalClassFilePath.lastIndexOf('/')); String externalClassDir = externalClassFilePath.substring(0, externalClassFilePath.lastIndexOf('/'));
// URL[] urls = null; URL[] urls = null;
// urls = new URL[]{new File(externalClassDir).toURI().toURL()}; urls = new URL[]{new File(externalClassDir).toURI().toURL()};
// //创建自定义类加载 //创建自定义类加载
// ExternalClassLoader externalClassLoader = new ExternalClassLoader(urls); ExternalClassLoader externalClassLoader = new ExternalClassLoader(urls);
//
// //加载类 //加载类
// Class<?> clazz = externalClassLoader.loadClassFromPath(classFilePath, packagePath + "." + versionClass); Class<?> clazz = externalClassLoader.loadClassFromPath(classFilePath, packagePath + "." + versionClass);
// //创建类的实例 //创建类的实例
// Object instance = clazz.getDeclaredConstructor().newInstance(); Object instance = clazz.getDeclaredConstructor().newInstance();
//
// engineMap.put(versionClass, (BasicEngine<DataValue>) instance); engineMap.put(versionClass, instance);
// } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException | } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException |
// IOException e) { IOException e) {
// throw new RuntimeException(e); throw new RuntimeException(e);
// } }
//
// BasicEngine<DataValue> engine = engineMap.get(versionClass); BasicEngine<DataValue> engine = (BasicEngine<DataValue>) engineMap.get(versionClass);
// engine.set(dataValue); try {
// engine.execution(); engine.set(DataValue.class.newInstance());
// return Result.success(); } catch (InstantiationException e) {
return null; throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
engine.execution();
return Result.success();
} }
@Override @Override