From f0125b2c08d7de5bbacaa130f9c4e69189bb7e6a Mon Sep 17 00:00:00 2001 From: zhang chengzhi <3144712872@qq.com> Date: Fri, 30 Aug 2024 10:19:23 +0800 Subject: [PATCH] 11111 --- .../rule/common/domain/req/EtlRuleAddReq.java | 2 ++ .../java/com/muyu/rule/server/EngineTest.java | 2 +- .../basic/engine/ENGINE_VALUE_VFD1000_V1.java | 2 -- .../server/complie/SourceCodeComplier.java | 3 +- .../rule/server/constant/SuffixClass.java | 18 ++++++++++ .../RuleEngineVersionController.java | 20 +++++++++++ .../server/engine/Engine_2024_8_23_2347.class | Bin 0 -> 2522 bytes .../server/load/JavaBinaryClassLoader.java | 3 +- .../pool/container/EngineContainer.java | 3 +- .../muyu/rule/server/scan/JavaCodeScan.java | 2 ++ .../service/RuleEngineVersionService.java | 8 +++++ .../service/impl/RuleEngineServiceImpl.java | 33 ++++++++++++++++++ .../muyu/rule/server/util/FileLoadUtil.java | 1 + 13 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/constant/SuffixClass.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/EtlRuleAddReq.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/EtlRuleAddReq.java index d71a3e4..0ff7d41 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/EtlRuleAddReq.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/EtlRuleAddReq.java @@ -1,5 +1,6 @@ package com.muyu.rule.common.domain.req; +import com.muyu.rule.common.utils.OssUtil; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import lombok.Data; @@ -43,4 +44,5 @@ public class EtlRuleAddReq { */ private String remark; + } 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 0284692..45d5f80 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 @@ -26,7 +26,7 @@ public class EngineTest { SourceCodeComplier.javaCompilerPath(engineConfig.getLocation()); //对class文件进行自定义类加载规则引擎 Map> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getPack(),engineConfig.getLocation()); - + System.out.println("====>"+stringClassMap); stringClassMap.forEach((key,value)->{ EngineContainer.loadEngineInstance(key,value); }); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java index 17bc004..0c73333 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java @@ -3,8 +3,6 @@ package com.muyu.rule.server.basic.engine; import com.muyu.rule.common.domain.DataValue; import com.muyu.rule.server.basic.abstracts.DataEngineValueActuator; -import javax.xml.crypto.Data; - /** * @Author:张承志 * @Package:com.muyu.rule.server.basic.engine diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/complie/SourceCodeComplier.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/complie/SourceCodeComplier.java index dadaa7b..d39fa21 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/complie/SourceCodeComplier.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/complie/SourceCodeComplier.java @@ -28,8 +28,7 @@ public class SourceCodeComplier extends ClassLoader { * @param path 文件夹路径 */ -public static void -javaCompilerPath(String path){ +public static void javaCompilerPath(String path){ File[] files = JavaCodeScan.javaSourceScanByPath(path); javaCampiler(files); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/constant/SuffixClass.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/constant/SuffixClass.java new file mode 100644 index 0000000..da308e5 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/constant/SuffixClass.java @@ -0,0 +1,18 @@ +package com.muyu.rule.server.constant; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.constant + * @Project:cloud-etl-rule + * @name:SuffixClass + * @Date:2024/8/30 9:14 + */ + +public class SuffixClass { + + public static final String Suffix_JAVA = ".java"; + public static final String Suffix_CLASS = ".class"; + + + +} 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 96a9490..0ec2272 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 @@ -3,6 +3,7 @@ package com.muyu.rule.server.controller; import com.muyu.common.core.domain.Result; import com.muyu.rule.common.domain.RuleEngineVersion; import com.muyu.rule.common.domain.req.VersionAddReq; +import com.muyu.rule.common.utils.OssUtil; import com.muyu.rule.server.service.RuleEngineVersionService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -74,6 +75,25 @@ public class RuleEngineVersionController { } + /** + * 上传 + * @param versionClazz + * @return + */ + + + @PostMapping("/deposit/{versionClazz}/{className}") + public Result deposit(@PathVariable("versionClazz") String versionClazz, @PathVariable("className") String className){ + + versionService.Upload(versionClazz,className); + + return Result.success(); + } + + + + + diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class b/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class new file mode 100644 index 0000000000000000000000000000000000000000..35ac10d44d5348152cf27f969001b62c45bae9d8 GIT binary patch literal 2522 zcma)8ZBr9h6n-uQHi>JA@dX1_Q9*-(QNUISzM|CFfYey5+LkWi5*IeR>Fx%l)+&~& z{Zi{xr@nk>JJXIc?X+6$V4$u2-rqrZ`4hEgHwlK2c4WfMeL45s=RD`R=jQK!CZ7S= zgU{V4L8$~pA{xn{KYlT0aHT$IWw`s|RDa8shDm8kNkGvU!$zhAFA0VNsrgpPx1_81`Fx4=`*hmXyVL@{*kQyKxAI z1$2mb!@|-W)#8D8awHkhlL`+QTp#9oAfahWAgZaRB&#$$tj6e@AZ5l3B1I5M#xwIS zgm6^An}0){fsGDuR0k@SL2 z9Anrp_ua(I{a>b1KhHiGOJBd6{^R!aS6@uuel&OO##CyuwdTUbC3p+R1w=%gz}u9` zLPrb^SslUAu%0N)YSA5suYASLpnoU{+aEH zWEjEv#knC)+qHg*r6Nq~=t{=>xPC(FQ)ouu=Xo?~-Q%SZQ;H6CN{Q^shT}=qx-C7j zA(Lshq)Tyba{Yj+YNlinOp0#|7uAq7ZQUYyTd=A!f-R8WHml;1W)5naNwrc+baL~o)^AjlW7v&zI4@wtx@aFU)V?T=vO25{ z@j#}CX724gmv{2{%Nk~!9+A|3g&VbDO&dxkf_Z7nR^z;x1shL{BzO_?GkNwo?dDBo zU9?Mz5|K?#*Xd)1wX=WSol5;UFW#AZW9f0PH*rqLSurq>%~Tb_dbY8wtxYb^sJwL>^S4#<@4frH+7;J#Prd<@q( zDzM+&vAWj@C^wm7K2%~zH}Q){`ed>p$b5d=E7dOV(Gw53(> z3E53fpOfs%68EsQVG{eu=mFf+J4n40+AY7X$2j8c^0_9^U5bWBUDoiO#&Mi(oWT1I zSiMQ~0gni<3zsoU^``_@AV*=nHp?mM6|_=Gqt*0iSEB~&u!Gt*Y(xiY(M|8?X>6jh z;ir%rV4x9~= loadClassByNameAndLocation(String name,String pack,File try { //将class文件的数据读入到byte数组中 转成二进制文件 byte[] datas = loader.loadClassData(name,location); - pack= loader.convert(pack); + //pack= loader.convert(pack); //通过byte数组加载Class对象 String cc = pack+name; diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/pool/container/EngineContainer.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/pool/container/EngineContainer.java index a1742a4..d21af86 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/pool/container/EngineContainer.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/pool/container/EngineContainer.java @@ -45,8 +45,9 @@ public class EngineContainer { classMap.put(engineKey, clazz); methodMap.put(engineKey, method); - +//获取所有的参数 Class[] parameterTypes = method.getParameterTypes(); + //获取所有的注解 Annotation[][] parameterAnnotations = method.getParameterAnnotations(); ArrayList engineParams = new ArrayList<>(); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/scan/JavaCodeScan.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/scan/JavaCodeScan.java index ac9fbc4..fb8ed45 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/scan/JavaCodeScan.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/scan/JavaCodeScan.java @@ -13,6 +13,8 @@ import java.io.FilenameFilter; * @Project:cloud-etl-rule * @name:JavaCodeScan * @Date:2024/8/22 21:11 + * + * java 文件扫描器 扫描某路径下的源码,二进制文件 */ public class JavaCodeScan { diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/RuleEngineVersionService.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/RuleEngineVersionService.java index 53385bb..884aadc 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/RuleEngineVersionService.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/RuleEngineVersionService.java @@ -27,4 +27,12 @@ public interface RuleEngineVersionService extends IService { void disable(Long id); String dataGenerate(String dataSource); + + /** + * + * @param versionClazz 具体代码 + * @param className 类的名 + */ + + void Upload(String versionClazz,String className); } 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 14c656b..87dc530 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 @@ -8,12 +8,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.enums.SystemYesNo; import com.muyu.rule.common.domain.RuleEngine; import com.muyu.rule.common.domain.RuleEngineVersion; +import com.muyu.rule.common.utils.OssUtil; import com.muyu.rule.server.mapper.RuleEngineVersionMapper; +import com.muyu.rule.server.scan.JavaCodeScan; import com.muyu.rule.server.service.RuleEngineVersionService; import org.springframework.stereotype.Service; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.util.Base64; import java.util.List; +import static com.muyu.rule.server.constant.SuffixClass.Suffix_JAVA; + /** * @Author:张承志 * @Package:com.muyu.rule.server.service.impl @@ -58,6 +66,31 @@ public class RuleEngineServiceImpl extends ServiceImpl