Browse Source

REPORT-153292 优化实现逻辑

feature/x
shengzu.xue 3 days ago
parent
commit
dbd16f680d
  1. 2
      designer-base/src/main/java/com/fr/design/update/processor/AbstractSyncProcessor.java
  2. 36
      designer-base/src/main/java/com/fr/design/update/processor/SyncProcessorExecutor.java

2
designer-base/src/main/java/com/fr/design/update/processor/AbstractSyncProcessor.java

@ -14,7 +14,7 @@ import java.util.Set;
* Created on 2025/5/15 15:27 * Created on 2025/5/15 15:27
* jar更新接口默认实现 * jar更新接口默认实现
*/ */
public class AbstractSyncProcessor implements SyncProcessor { public abstract class AbstractSyncProcessor implements SyncProcessor {
@Override @Override
public int currentAPILevel() { public int currentAPILevel() {

36
designer-base/src/main/java/com/fr/design/update/processor/SyncProcessorExecutor.java

@ -51,7 +51,7 @@ public class SyncProcessorExecutor {
* 获取执行器实例 * 获取执行器实例
*/ */
public SyncProcessor getExecutor() { public SyncProcessor getExecutor() {
return ExtraDesignClassManager.getInstance().getSingle(SyncProcessor.XML_TAG, new AbstractSyncProcessor()); return ExtraDesignClassManager.getInstance().getSingle(SyncProcessor.XML_TAG, new AbstractSyncProcessor(){});
} }
@ -60,31 +60,34 @@ public class SyncProcessorExecutor {
*/ */
public boolean executeJarSync(UpdateCallBack callBack, String fullBuildNo) { public boolean executeJarSync(UpdateCallBack callBack, String fullBuildNo) {
SyncProcessor processor = getExecutor(); SyncProcessor processor = getExecutor();
if (processor.supportedSyncType().contains(SyncProcessor.SyncType.JAR_SYNC)) { // 提前检查不支持的同步类型
String dir = StableUtils.pathJoin(ProjectLibrary.getInstance().getLibHome(), ProjectConstants.ASSIST_NAME, UpdateConstants.ENV_LIB); if (!processor.supportedSyncType().contains(SyncProcessor.SyncType.JAR_SYNC)) {
try { return SyncExecutor.getInstance().execute(callBack, fullBuildNo);
// 备份jar
Recover recoverForSync = RecoverForSync.getInstance();
if (fullBuildNo != null) {
if (recoverForSync.backup()) {
if (processor.executeJarSync(callBack, fullBuildNo, processor.DESIGNER_JARS_PATH, processor.COMMON_JARS_PATH)) {
CommandGroup commands = getCommandGroup(processor.DESIGNER_JARS_PATH, processor.COMMON_JARS_PATH);
return commands.execute(callBack);
} }
// 同步失败,恢复 Recover recoverForSync = RecoverForSync.getInstance();
recoverForSync.recover(); // 备份失败直接返回
if (!recoverForSync.backup()) {
return false;
} }
String dir = StableUtils.pathJoin(ProjectLibrary.getInstance().getLibHome(),
ProjectConstants.ASSIST_NAME, UpdateConstants.ENV_LIB);
try {
if (fullBuildNo == null) {
return false;
} }
if (!processor.executeJarSync(callBack, fullBuildNo, processor.DESIGNER_JARS_PATH, processor.COMMON_JARS_PATH)) {
recoverForSync.recover();
return false; return false;
}
CommandGroup commands = getCommandGroup(processor.DESIGNER_JARS_PATH, processor.COMMON_JARS_PATH);
return commands.execute(callBack);
} catch (Exception e) { } catch (Exception e) {
recoverForSync.recover();
FineLoggerFactory.getLogger().error(e.getMessage(), e); FineLoggerFactory.getLogger().error(e.getMessage(), e);
return false; return false;
} finally { } finally {
CommonIOUtils.deleteFile(new File(dir)); CommonIOUtils.deleteFile(new File(dir));
} }
} else {
return SyncExecutor.getInstance().execute(callBack, fullBuildNo);
}
} }
@ -134,6 +137,7 @@ public class SyncProcessorExecutor {
differentPlugin = new JSONObject(); differentPlugin = new JSONObject();
differentPlugin.put(ID, pluginMarker.getPluginID()); differentPlugin.put(ID, pluginMarker.getPluginID());
differentPlugin.put(VERSION, pluginMarker.getVersion()); differentPlugin.put(VERSION, pluginMarker.getVersion());
differentPluginsJsonArray.add(differentPlugin);
} }
} }
return differentPluginsJsonArray; return differentPluginsJsonArray;

Loading…
Cancel
Save