refactor(系统设置): 加载插件时,本地没有则从对象存储重新加载
This commit is contained in:
parent
b7cc4fb45e
commit
b6951bcef6
|
@ -26,6 +26,16 @@ public interface FileRepository {
|
|||
*/
|
||||
String saveFile(byte[] bytes, FileRequest request) throws Exception;
|
||||
|
||||
/**
|
||||
* 保存文件
|
||||
*
|
||||
* @param inputStream
|
||||
* @param request
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
String saveFile(InputStream inputStream, FileRequest request) throws Exception;
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
*
|
||||
|
|
|
@ -43,6 +43,13 @@ public class LocalFileRepository implements FileRepository {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String saveFile(InputStream inputStream, FileRequest request) throws Exception {
|
||||
File file = new File(getFilePath(request));
|
||||
FileUtils.copyInputStreamToFile(inputStream, file);
|
||||
return file.getPath();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(FileRequest request) throws Exception {
|
||||
String path = StringUtils.join(getFilePath(request));
|
||||
|
|
|
@ -57,6 +57,11 @@ public class MinioRepository implements FileRepository {
|
|||
return request.getFileName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String saveFile(InputStream inputStream, FileRequest request) throws Exception {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(FileRequest request) throws Exception {
|
||||
String filePath = getPath(request);
|
||||
|
|
|
@ -55,7 +55,14 @@ public class PluginLoadService {
|
|||
* @return
|
||||
*/
|
||||
public String loadPlugin(String fileName) {
|
||||
return msPluginManager.loadPlugin(Paths.get(MsFileUtils.PLUGIN_DIR + "/" + fileName));
|
||||
MsFileUtils.validateFileName(fileName);
|
||||
String filePath = MsFileUtils.PLUGIN_DIR + "/" + fileName;
|
||||
File file = new File(filePath);
|
||||
if (!file.exists()) {
|
||||
// 文件不存在,则从对象存储重新下载
|
||||
downloadPluginFromRepository(fileName);
|
||||
}
|
||||
return msPluginManager.loadPlugin(Paths.get(filePath));
|
||||
}
|
||||
|
||||
|
||||
|
@ -66,6 +73,7 @@ public class PluginLoadService {
|
|||
* @throws Exception
|
||||
*/
|
||||
public void loadPluginFromRepository(String fileName) {
|
||||
MsFileUtils.validateFileName(fileName);
|
||||
String filePath = MsFileUtils.PLUGIN_DIR + "/" + fileName;
|
||||
File file = new File(filePath);
|
||||
try {
|
||||
|
@ -108,6 +116,21 @@ public class PluginLoadService {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 从对象存储中下载插件
|
||||
*
|
||||
* @param fileName
|
||||
*/
|
||||
public void downloadPluginFromRepository(String fileName) {
|
||||
try {
|
||||
InputStream inputStream = FileCenter.getDefaultRepository().getFileAsStream(getFileRequest(fileName));
|
||||
FileCenter.getRepository(StorageType.LOCAL).saveFile(inputStream, getFileRequest(fileName));
|
||||
} catch (Exception e) {
|
||||
LogUtils.error(e);
|
||||
throw new MSException("下载插件异常", e);
|
||||
}
|
||||
}
|
||||
|
||||
private FileRequest getFileRequest(String name) {
|
||||
FileRequest request = new FileRequest();
|
||||
request.setProjectId(MsFileUtils.PLUGIN_DIR_NAME);
|
||||
|
|
|
@ -138,7 +138,7 @@ public class PluginService {
|
|||
|
||||
// 通知其他节点加载插件
|
||||
notifiedPluginAdd(id, plugin.getFileName());
|
||||
} catch (Exception e) {
|
||||
} catch (Throwable e) {
|
||||
// 删除插件
|
||||
pluginLoadService.unloadPlugin(id);
|
||||
pluginLoadService.deletePluginFile(file.getOriginalFilename());
|
||||
|
|
Loading…
Reference in New Issue