From 63052ba57f52f1e051dc44d364fed859516c3bf1 Mon Sep 17 00:00:00 2001 From: zhang chengzhi <3144712872@qq.com> Date: Wed, 4 Sep 2024 19:11:25 +0800 Subject: [PATCH] 11111 --- .../com/muyu/rule/common/domain/Person.java | 58 ------------------ .../com/muyu/rule/server/EngineConfig.java | 59 +++++++++++-------- .../java/com/muyu/rule/server/EngineTest.java | 1 - .../basic/handler/DataEngineValueHandler.java | 13 +--- .../DataSourceDisposeController.java | 6 +- .../RuleEngineVersionController.java | 19 ------ .../rule/server/load/ExternalClassLoader.java | 23 ++++++++ .../server/service/SourceDisposeService.java | 2 + .../muyu/rule/server/service/TestServer.java | 11 ++++ .../service/impl/RuleEngineServiceImpl.java | 31 +++++++++- .../impl/SourceDisposeServiceImpl.java | 9 +++ 11 files changed, 114 insertions(+), 118 deletions(-) delete mode 100644 cloud-rule-common/src/main/java/com/muyu/rule/common/domain/Person.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/load/ExternalClassLoader.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/service/TestServer.java diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/Person.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/Person.java deleted file mode 100644 index e83ac6a..0000000 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/Person.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.muyu.rule.common.domain; - -import java.util.*; - -class Person { - private String name; - private int age; - - public Person(String name, int age) { - this.name = name; - this.age = age; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Person person = (Person) o; - return age == person.age && - Objects.equals(name, person.name); - } - - @Override - public int hashCode() { - return Objects.hash(name, age); - } - - @Override - public String toString() { - return "Person{" + - "name='" + name + '\'' + - ", age=" + age + - '}'; - } - - - - public static void main(String[] args) { - Person[] people = new Person[]{ - new Person("Alice", 30), - new Person("Alice", 30), - new Person("Bob", 25), - new Person("Alice", 30), - new Person("Charlie", 35) - }; - - // 使用 HashSet 去重 - Set uniquePeople = new HashSet<>(Arrays.asList(people)); - - // 将 Set 转换回数组 - Person[] uniqueArray = uniquePeople.toArray(new Person[0]); - - // 输出结果 - System.out.println(Arrays.toString(uniqueArray)); - } - - -} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineConfig.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineConfig.java index 17ef5b8..f07acc7 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineConfig.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineConfig.java @@ -1,5 +1,7 @@ package com.muyu.rule.server; +import lombok.Setter; + import java.util.concurrent.atomic.AtomicReference; /** @@ -38,12 +40,13 @@ public class EngineConfig { /** * 服务器的源文件位置 */ - private static String serverPath ="home/source/"; + private String sourcePath ="home/source/"; /** * 服务器的编译文件位置 */ - private static String ClassPath ="home/class/"; + @Setter + private String classPath ="home/class/"; /** * 服务器目录路径 @@ -60,12 +63,21 @@ public class EngineConfig { private String serverPack="com.muyu.rule.server.basic.engine.value."; - public String getServerPath() { - return serverPath; + + public String getPack() { + return pack; } - public void setServerPath(String serverPath) { - this.serverPath = serverPath; + public void setPack(String pack) { + this.pack = pack; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; } public String getLocalSource() { @@ -84,6 +96,22 @@ public class EngineConfig { this.localTarget = localTarget; } + public String getSourcePath() { + return sourcePath; + } + + public void setSourcePath(String sourcePath) { + this.sourcePath = sourcePath; + } + + public String getClassPath() { + return classPath; + } + + public void setClassPath(String classPath) { + this.classPath = classPath; + } + public String getServerPack() { return serverPack; } @@ -91,23 +119,4 @@ public class EngineConfig { public void setServerPack(String serverPack) { this.serverPack = serverPack; } - - - - public String getPack() { - return pack; - } - - public void setPack(String pack) { - - this.pack = pack; - } - - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } } diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java index 056b824..c98c34c 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java @@ -47,7 +47,6 @@ public class EngineTest { Object engineObject = EngineExecution.engineExe("Engine_2024_8_23_2347", params); System.out.println("====>"+engineObject); - } } diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineValueHandler.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineValueHandler.java index 49e6785..4fd3c0c 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineValueHandler.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineValueHandler.java @@ -13,23 +13,19 @@ import com.muyu.rule.common.domain.DataValue; public class DataEngineValueHandler { - public static void set(DataValue dataDescribe){ + public static void set(DataValue dataValue){ + + DataEngineHandler.set(dataValue); - DataEngineHandler.set(dataDescribe); } - - - public static DataValue get(){ return DataEngineHandler.get(); } - public static void remove(){ DataEngineHandler.remove(); } - public static Object getValue(){ return get().getValue(); } @@ -38,7 +34,4 @@ public class DataEngineValueHandler { return Convert.toInt(getValue(),null); } - - - } diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/DataSourceDisposeController.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/DataSourceDisposeController.java index 5233b87..92d5966 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/DataSourceDisposeController.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/DataSourceDisposeController.java @@ -52,12 +52,14 @@ public class DataSourceDisposeController { /** * 对字段进行测试 - * @param dataValue + * @param object * @return */ @PostMapping("/valueTest") - public Result valueTest(DataValue dataValue){ + public Result valueTest(Object object){ + + sourceDisposeService.valueTest(object); return Result.success(); } diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java index 678a00b..bf8c4ba 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java @@ -146,25 +146,6 @@ public Result testValue(@PathVariable("versionClazz") String versionClazz,@Reque return Result.success(); } - - - - - - - - - - - - - - - - - - - @PostMapping("/test") public Result test(){ diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/load/ExternalClassLoader.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/load/ExternalClassLoader.java new file mode 100644 index 0000000..aa42e69 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/load/ExternalClassLoader.java @@ -0,0 +1,23 @@ +package com.muyu.rule.server.load; + +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.file.Files; +import java.nio.file.Path; + +public class ExternalClassLoader extends URLClassLoader { + + public ExternalClassLoader(URL[] urls) { + super(urls, Thread.currentThread().getContextClassLoader()); + } + + public Class defineClassFromBytes(byte[] classBytes, String className) throws IOException { + return super.defineClass(className, classBytes, 0, classBytes.length); + } + + public Class loadClassFromPath(Path classFilePath, String className) throws IOException { + byte[] classData = Files.readAllBytes(classFilePath); + return defineClassFromBytes(classData, className); + } +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/SourceDisposeService.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/SourceDisposeService.java index ec95eb5..438acee 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/SourceDisposeService.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/SourceDisposeService.java @@ -28,4 +28,6 @@ public interface SourceDisposeService { Boolean notEmpty(Object dataSource); + + String valueTest(Object object); } diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/TestServer.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/TestServer.java new file mode 100644 index 0000000..921b1da --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/TestServer.java @@ -0,0 +1,11 @@ +package com.muyu.rule.server.service; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.service + * @Project:cloud-etl-rule + * @name:TestServer + * @Date:2024/9/4 18:56 + */ +public class TestServer { +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineServiceImpl.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineServiceImpl.java index e7fbc1e..85bbf17 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineServiceImpl.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineServiceImpl.java @@ -20,11 +20,16 @@ import com.muyu.rule.server.service.RuleEngineVersionService; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; +import javax.tools.JavaCompiler; +import javax.tools.ToolProvider; import java.io.ByteArrayInputStream; import java.io.File; +import java.io.InputStream; +import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Arrays; import java.util.Base64; import java.util.List; import java.util.Map; @@ -107,14 +112,34 @@ public class RuleEngineServiceImpl extends ServiceImpl> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getServerPack(), engineConfig.getServerPath()); + Map> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getServerPack(), engineConfig.getClassPath()); } static Map> engineMap = new ConcurrentHashMap<>(); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/SourceDisposeServiceImpl.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/SourceDisposeServiceImpl.java index 190e440..d69622e 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/SourceDisposeServiceImpl.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/SourceDisposeServiceImpl.java @@ -36,4 +36,13 @@ public class SourceDisposeServiceImpl implements SourceDisposeService { return true; } + @Override + public String valueTest(Object object) { + + + + + return null; + } + }