From ef9e7cf1303d6dc9a5b1a66377fe408d4dba9e9e Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 27 Mar 2020 18:25:21 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-28894=20=E5=A4=9A=E6=AC=A1=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E8=BF=9C=E7=A8=8B=E7=9A=84=E9=97=AE=E9=A2=98=20&&=20x?= =?UTF-8?q?ml=E4=B8=8D=E5=8F=AF=E8=AF=BB=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignerEnvManager.java | 43 +++++++++++-------- .../env/DesignerWorkspaceGenerator.java | 8 +++- .../main/java/com/fr/exit/DesignerExiter.java | 6 +++ 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index d94605d42d..77c779ce3e 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -202,6 +202,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { XMLTools.readFileXML(designerEnvManager, designerEnvManager.getDesignerEnvFile()); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); + XmlHandler.Self.handle(e); } // james:如果没有env定义,要设置一个默认的 @@ -348,23 +349,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } catch (IOException e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); - ErrorDialog dialog = new ErrorDialog(null, - Toolkit.i18nText("Fine-Design_Error_Start_Apology_Message"), - Toolkit.i18nText("Fine-Design_Error_Start_Report"), - e.getMessage()) { - @Override - protected void okEvent() { - dispose(); - DesignerExiter.getInstance().execute(); - } - - @Override - protected void restartEvent() { - dispose(); - RestartHelper.restart(); - } - }; - dialog.setVisible(true); + XmlHandler.Self.handle(e); } finally { if (null != fileWriter) { try { @@ -2059,4 +2044,28 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { public void setVcsConfigManager(VcsConfigManager vcsConfigManager) { this.vcsConfigManager = vcsConfigManager; } + + enum XmlHandler { + Self; + public void handle(Throwable throwable) { + ErrorDialog dialog = new ErrorDialog(null, + Toolkit.i18nText("Fine-Design_Error_Start_Apology_Message"), + Toolkit.i18nText("Fine-Design_Error_Start_Report"), + throwable.getMessage()) { + @Override + protected void okEvent() { + dispose(); + DesignerExiter.getInstance().execute(); + } + + @Override + protected void restartEvent() { + dispose(); + RestartHelper.restart(); + } + }; + dialog.setVisible(true); + DesignerExiter.getInstance().execute(); + } + }; } diff --git a/designer-base/src/main/java/com/fr/design/env/DesignerWorkspaceGenerator.java b/designer-base/src/main/java/com/fr/design/env/DesignerWorkspaceGenerator.java index d39f6a1d53..f77debe667 100644 --- a/designer-base/src/main/java/com/fr/design/env/DesignerWorkspaceGenerator.java +++ b/designer-base/src/main/java/com/fr/design/env/DesignerWorkspaceGenerator.java @@ -8,7 +8,6 @@ import com.fr.design.mainframe.messagecollect.StartErrorMessageCollector; import com.fr.design.mainframe.messagecollect.entity.DesignerErrorMessage; import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; -import com.fr.module.ModuleContext; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; @@ -17,6 +16,7 @@ import com.fr.workspace.connect.WorkspaceClient; import javax.swing.*; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit; public class DesignerWorkspaceGenerator { private static final int WAIT_FREQ = 60; - private static ExecutorService service = ModuleContext.getExecutor().newSingleThreadExecutor( + private static ExecutorService service = Executors.newCachedThreadPool( new NamedThreadFactory("DesignerWorkspaceGenerator")); public static Workspace generate(final DesignerWorkspaceInfo config) throws Exception { @@ -89,4 +89,8 @@ public class DesignerWorkspaceGenerator { } } } + + public static void stop() { + service.shutdown(); + } } diff --git a/designer-base/src/main/java/com/fr/exit/DesignerExiter.java b/designer-base/src/main/java/com/fr/exit/DesignerExiter.java index 06260894e5..e7189511a1 100644 --- a/designer-base/src/main/java/com/fr/exit/DesignerExiter.java +++ b/designer-base/src/main/java/com/fr/exit/DesignerExiter.java @@ -1,5 +1,6 @@ package com.fr.exit; +import com.fr.design.env.DesignerWorkspaceGenerator; import com.fr.process.engine.core.FineProcessContext; import com.fr.process.engine.core.FineProcessEngineEvent; import com.fr.stable.StableUtils; @@ -19,9 +20,14 @@ public class DesignerExiter { } public void execute() { + beforeExit(); if (FineProcessContext.getParentPipe() != null) { FineProcessContext.getParentPipe().fire(FineProcessEngineEvent.DESTROY); } System.exit(0); } + + private void beforeExit() { + DesignerWorkspaceGenerator.stop(); + } }