feat():测试
parent
3e97c2fb02
commit
6fe767e404
|
@ -81,4 +81,11 @@ public class RuleVersion extends BaseEntity {
|
|||
.build();
|
||||
}
|
||||
|
||||
public static RuleVersion updBuild(RuleVersionUpdReq ruleVersionUpdReq, Supplier<Long> idSupplier) {
|
||||
return RuleVersion.builder()
|
||||
.ruleId(idSupplier.get())
|
||||
.ruleVersionText(ruleVersionUpdReq.getRuleVersionActivate())
|
||||
.build();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package com.muyu.compile;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
|
@ -1,14 +1,18 @@
|
|||
package com.muyu.load;
|
||||
|
||||
import com.aliyun.oss.OSS;
|
||||
import com.aliyun.oss.OSSClient;
|
||||
import com.aliyun.oss.OSSClientBuilder;
|
||||
import com.aliyun.oss.model.GetObjectRequest;
|
||||
import com.aliyun.oss.model.OSSObject;
|
||||
import com.aliyun.oss.model.ObjectMetadata;
|
||||
import com.aliyun.oss.model.PutObjectRequest;
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.compile.OSSFileCompile;
|
||||
import com.muyu.util.SourceCodeCompiler;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
@ -76,22 +80,27 @@ public class OSSFileLoad {
|
|||
}
|
||||
//对路径里的.java文件进行编译
|
||||
System.out.println("第一步");
|
||||
OSSFileCompile.compile("home/"+fileName);
|
||||
// SourceCodeCompiler.javaCompilerFile("home/"+fileName);
|
||||
// System.out.println("第二步");
|
||||
// File outputDir = new File("home/"); // 或者是你指定的其他输出目录
|
||||
// System.out.println("第三步");
|
||||
// File[] classFiles = outputDir.listFiles(); // 获取输出目录中的所有文件
|
||||
// if (classFiles != null) {
|
||||
// for (File classFile : classFiles) {
|
||||
// if (classFile.getName().endsWith(".class")) {
|
||||
// System.out.println("找到class文件 " + classFile.getName());
|
||||
// }
|
||||
// }
|
||||
// //把.class文件存入oss中
|
||||
// }else {
|
||||
// System.out.println("没有找到文件");
|
||||
// }
|
||||
// OSSFileCompile.compile("home/"+fileName);
|
||||
SourceCodeCompiler.javaCompilerPath("home/");
|
||||
System.out.println("第二步");
|
||||
File outputDir = new File("home/"); // 或者是你指定的其他输出目录
|
||||
System.out.println("第三步");
|
||||
File[] classFiles = outputDir.listFiles(); // 获取输出目录中的所有文件
|
||||
if (classFiles != null) {
|
||||
for (File classFile : classFiles) {
|
||||
if (classFile.getName().endsWith(".class")) {
|
||||
System.out.println("找到class文件 " + classFile.getName());
|
||||
|
||||
// 把.class文件存入oss中
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}else {
|
||||
System.out.println("没有找到文件");
|
||||
}
|
||||
return Result.success(source);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,14 +3,13 @@ package com.muyu.util;
|
|||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import javax.tools.JavaCompiler;
|
||||
import javax.tools.JavaFileObject;
|
||||
import javax.tools.StandardJavaFileManager;
|
||||
import javax.tools.ToolProvider;
|
||||
import javax.tools.*;
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.*;
|
||||
|
||||
public class SourceCodeCompiler {
|
||||
|
||||
|
@ -61,8 +60,9 @@ public class SourceCodeCompiler {
|
|||
try {
|
||||
//通过源文件获取到想要编译的java类源代码迭代器,包括所有的内部类,其中每一个类都是一个JavaFileObjects,也被称为一个汇编单元
|
||||
Iterable<? extends JavaFileObject> javaFileObjects = fileManager.getJavaFileObjects(file);
|
||||
String[] strings = {"-classpath","/home","-verbose","-d", "/home"};
|
||||
//生成编译任务
|
||||
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, Arrays.asList("-d","home/"), null, javaFileObjects);
|
||||
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, List.of(strings), null, javaFileObjects);
|
||||
//执行编译任务
|
||||
task.call();
|
||||
}catch (Exception e){
|
||||
|
|
|
@ -132,7 +132,13 @@ public class RuleVersionController {
|
|||
return Result.success(ruleVersionService.generatedCode(ruleVersion));
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载class文件
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
@PostMapping("/loadClass")
|
||||
@Operation(summary = "加载class文件",description = "在进行编译java类时需先加载class文件")
|
||||
public Result<Object> OSSLoadFileClass() throws IOException {
|
||||
Load.streamingDownload("DataEngineRecordActuator.class");
|
||||
Load.streamingDownload("DataEngineSetActuator.class");
|
||||
|
@ -141,4 +147,22 @@ public class RuleVersionController {
|
|||
return Result.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过ID修改版本代码
|
||||
* @param ruleVersionId
|
||||
* @param ruleVersionUpdReq
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/updText/{ruleVersionId}")
|
||||
@Operation(summary = "通过ID修改规则版本代码",description = "进行版本更新时操作")
|
||||
public Result<Object> updText(
|
||||
@PathVariable("ruleVersionId") Long ruleVersionId,
|
||||
@Validated @RequestBody RuleVersionUpdReq ruleVersionUpdReq
|
||||
){
|
||||
ruleVersionService.updateById(RuleVersion.updBuild(ruleVersionUpdReq,() -> ruleVersionId));
|
||||
return Result.success(null,"操作成功");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue