master
zhang chengzhi 2024-08-30 10:19:23 +08:00
parent 877eb048d3
commit f0125b2c08
13 changed files with 90 additions and 7 deletions

View File

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

View File

@ -26,7 +26,7 @@ public class EngineTest {
SourceCodeComplier.javaCompilerPath(engineConfig.getLocation());
//对class文件进行自定义类加载规则引擎
Map<String ,Class<?>> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getPack(),engineConfig.getLocation());
System.out.println("====>"+stringClassMap);
stringClassMap.forEach((key,value)->{
EngineContainer.loadEngineInstance(key,value);
});

View File

@ -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
* @Packagecom.muyu.rule.server.basic.engine

View File

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

View File

@ -0,0 +1,18 @@
package com.muyu.rule.server.constant;
/**
* @Author
* @Packagecom.muyu.rule.server.constant
* @Projectcloud-etl-rule
* @nameSuffixClass
* @Date2024/8/30 9:14
*/
public class SuffixClass {
public static final String Suffix_JAVA = ".java";
public static final String Suffix_CLASS = ".class";
}

View File

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

View File

@ -19,6 +19,7 @@ import java.util.Map;
* @Projectcloud-etl-rule
* @nameJavaBinaryClassLoader
* @Date2024/8/22 20:54
* java
*/
public class JavaBinaryClassLoader extends ClassLoader{
@ -43,7 +44,7 @@ private static Class<?> 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;

View File

@ -45,8 +45,9 @@ public class EngineContainer {
classMap.put(engineKey, clazz);
methodMap.put(engineKey, method);
//获取所有的参数
Class<?>[] parameterTypes = method.getParameterTypes();
//获取所有的注解
Annotation[][] parameterAnnotations = method.getParameterAnnotations();
ArrayList<String> engineParams = new ArrayList<>();

View File

@ -13,6 +13,8 @@ import java.io.FilenameFilter;
* @Projectcloud-etl-rule
* @nameJavaCodeScan
* @Date2024/8/22 21:11
*
* java ,
*/
public class JavaCodeScan {

View File

@ -27,4 +27,12 @@ public interface RuleEngineVersionService extends IService<RuleEngineVersion> {
void disable(Long id);
String dataGenerate(String dataSource);
/**
*
* @param versionClazz
* @param className
*/
void Upload(String versionClazz,String className);
}

View File

@ -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
* @Packagecom.muyu.rule.server.service.impl
@ -58,6 +66,31 @@ public class RuleEngineServiceImpl extends ServiceImpl<RuleEngineVersionMapper,R
return null;
}
/**
*
* @param versionClazz
* @param className
*/
@Override
public void Upload(String versionClazz,String className) {
// 使用ByteArrayInputStream将字符串内容转换为输入流
ByteArrayInputStream inputStream = new ByteArrayInputStream(versionClazz.getBytes());
OssUtil.uploadFileInputStreamForBucket("mall-bw",className,inputStream);
// OssUtil.uploadFileInputStreamForBucket(,"E:\\practical_training\\cloud-etl-rule\\cloud-rule-server\\src\\main\\java\\com\\muyu\\rule\\server\\engine\\");
}
/**
*

View File

@ -1,5 +1,6 @@
package com.muyu.rule.server.util;
import com.muyu.rule.server.constant.SuffixClass;
import lombok.extern.log4j.Log4j2;
import java.io.*;