11111
parent
877eb048d3
commit
f0125b2c08
|
@ -1,5 +1,6 @@
|
||||||
package com.muyu.rule.common.domain.req;
|
package com.muyu.rule.common.domain.req;
|
||||||
|
|
||||||
|
import com.muyu.rule.common.utils.OssUtil;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -43,4 +44,5 @@ public class EtlRuleAddReq {
|
||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class EngineTest {
|
||||||
SourceCodeComplier.javaCompilerPath(engineConfig.getLocation());
|
SourceCodeComplier.javaCompilerPath(engineConfig.getLocation());
|
||||||
//对class文件进行自定义类加载规则引擎
|
//对class文件进行自定义类加载规则引擎
|
||||||
Map<String ,Class<?>> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getPack(),engineConfig.getLocation());
|
Map<String ,Class<?>> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getPack(),engineConfig.getLocation());
|
||||||
|
System.out.println("====>"+stringClassMap);
|
||||||
stringClassMap.forEach((key,value)->{
|
stringClassMap.forEach((key,value)->{
|
||||||
EngineContainer.loadEngineInstance(key,value);
|
EngineContainer.loadEngineInstance(key,value);
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,8 +3,6 @@ package com.muyu.rule.server.basic.engine;
|
||||||
import com.muyu.rule.common.domain.DataValue;
|
import com.muyu.rule.common.domain.DataValue;
|
||||||
import com.muyu.rule.server.basic.abstracts.DataEngineValueActuator;
|
import com.muyu.rule.server.basic.abstracts.DataEngineValueActuator;
|
||||||
|
|
||||||
import javax.xml.crypto.Data;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author:张承志
|
* @Author:张承志
|
||||||
* @Package:com.muyu.rule.server.basic.engine
|
* @Package:com.muyu.rule.server.basic.engine
|
||||||
|
|
|
@ -28,8 +28,7 @@ public class SourceCodeComplier extends ClassLoader {
|
||||||
* @param path 文件夹路径
|
* @param path 文件夹路径
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public static void
|
public static void javaCompilerPath(String path){
|
||||||
javaCompilerPath(String path){
|
|
||||||
File[] files = JavaCodeScan.javaSourceScanByPath(path);
|
File[] files = JavaCodeScan.javaSourceScanByPath(path);
|
||||||
|
|
||||||
javaCampiler(files);
|
javaCampiler(files);
|
||||||
|
|
|
@ -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";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ package com.muyu.rule.server.controller;
|
||||||
import com.muyu.common.core.domain.Result;
|
import com.muyu.common.core.domain.Result;
|
||||||
import com.muyu.rule.common.domain.RuleEngineVersion;
|
import com.muyu.rule.common.domain.RuleEngineVersion;
|
||||||
import com.muyu.rule.common.domain.req.VersionAddReq;
|
import com.muyu.rule.common.domain.req.VersionAddReq;
|
||||||
|
import com.muyu.rule.common.utils.OssUtil;
|
||||||
import com.muyu.rule.server.service.RuleEngineVersionService;
|
import com.muyu.rule.server.service.RuleEngineVersionService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -19,6 +19,7 @@ import java.util.Map;
|
||||||
* @Project:cloud-etl-rule
|
* @Project:cloud-etl-rule
|
||||||
* @name:JavaBinaryClassLoader
|
* @name:JavaBinaryClassLoader
|
||||||
* @Date:2024/8/22 20:54
|
* @Date:2024/8/22 20:54
|
||||||
|
* java字节码文件 加载器
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class JavaBinaryClassLoader extends ClassLoader{
|
public class JavaBinaryClassLoader extends ClassLoader{
|
||||||
|
@ -43,7 +44,7 @@ private static Class<?> loadClassByNameAndLocation(String name,String pack,File
|
||||||
try {
|
try {
|
||||||
//将class文件的数据读入到byte数组中 转成二进制文件
|
//将class文件的数据读入到byte数组中 转成二进制文件
|
||||||
byte[] datas = loader.loadClassData(name,location);
|
byte[] datas = loader.loadClassData(name,location);
|
||||||
pack= loader.convert(pack);
|
//pack= loader.convert(pack);
|
||||||
//通过byte数组加载Class对象
|
//通过byte数组加载Class对象
|
||||||
String cc = pack+name;
|
String cc = pack+name;
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,9 @@ public class EngineContainer {
|
||||||
|
|
||||||
classMap.put(engineKey, clazz);
|
classMap.put(engineKey, clazz);
|
||||||
methodMap.put(engineKey, method);
|
methodMap.put(engineKey, method);
|
||||||
|
//获取所有的参数
|
||||||
Class<?>[] parameterTypes = method.getParameterTypes();
|
Class<?>[] parameterTypes = method.getParameterTypes();
|
||||||
|
//获取所有的注解
|
||||||
Annotation[][] parameterAnnotations = method.getParameterAnnotations();
|
Annotation[][] parameterAnnotations = method.getParameterAnnotations();
|
||||||
ArrayList<String> engineParams = new ArrayList<>();
|
ArrayList<String> engineParams = new ArrayList<>();
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ import java.io.FilenameFilter;
|
||||||
* @Project:cloud-etl-rule
|
* @Project:cloud-etl-rule
|
||||||
* @name:JavaCodeScan
|
* @name:JavaCodeScan
|
||||||
* @Date:2024/8/22 21:11
|
* @Date:2024/8/22 21:11
|
||||||
|
*
|
||||||
|
* java 文件扫描器 扫描某路径下的源码,二进制文件
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class JavaCodeScan {
|
public class JavaCodeScan {
|
||||||
|
|
|
@ -27,4 +27,12 @@ public interface RuleEngineVersionService extends IService<RuleEngineVersion> {
|
||||||
void disable(Long id);
|
void disable(Long id);
|
||||||
|
|
||||||
String dataGenerate(String dataSource);
|
String dataGenerate(String dataSource);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param versionClazz 具体代码
|
||||||
|
* @param className 类的名
|
||||||
|
*/
|
||||||
|
|
||||||
|
void Upload(String versionClazz,String className);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,12 +8,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.muyu.common.core.enums.SystemYesNo;
|
import com.muyu.common.core.enums.SystemYesNo;
|
||||||
import com.muyu.rule.common.domain.RuleEngine;
|
import com.muyu.rule.common.domain.RuleEngine;
|
||||||
import com.muyu.rule.common.domain.RuleEngineVersion;
|
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.mapper.RuleEngineVersionMapper;
|
||||||
|
import com.muyu.rule.server.scan.JavaCodeScan;
|
||||||
import com.muyu.rule.server.service.RuleEngineVersionService;
|
import com.muyu.rule.server.service.RuleEngineVersionService;
|
||||||
import org.springframework.stereotype.Service;
|
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 java.util.List;
|
||||||
|
|
||||||
|
import static com.muyu.rule.server.constant.SuffixClass.Suffix_JAVA;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author:张承志
|
* @Author:张承志
|
||||||
* @Package:com.muyu.rule.server.service.impl
|
* @Package:com.muyu.rule.server.service.impl
|
||||||
|
@ -58,6 +66,31 @@ public class RuleEngineServiceImpl extends ServiceImpl<RuleEngineVersionMapper,R
|
||||||
return null;
|
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\\");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改激活
|
* 修改激活
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.muyu.rule.server.util;
|
package com.muyu.rule.server.util;
|
||||||
|
|
||||||
|
import com.muyu.rule.server.constant.SuffixClass;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
|
Loading…
Reference in New Issue