• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jiangxincode / ApkToolBoxGUI / #1431

22 Apr 2026 01:29PM UTC coverage: 3.42%. Remained the same
#1431

push

jiangxincode
fix: close ExecutorService in finally clause to fix resource leak (SonarCloud Blocker)

0 of 6 new or added lines in 1 file covered. (0.0%)

2 existing lines in 1 file now uncovered.

250 of 7311 relevant lines covered (3.42%)

0.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/edu/jiangxin/apktoolbox/swing/extend/plugin/PluginUtils.java
1
package edu.jiangxin.apktoolbox.swing.extend.plugin;
2

3
import edu.jiangxin.apktoolbox.swing.extend.plugin.runnable.DownloadRunnable;
4
import edu.jiangxin.apktoolbox.swing.extend.plugin.runnable.UnzipRunnable;
5
import edu.jiangxin.apktoolbox.utils.Utils;
6
import org.apache.logging.log4j.LogManager;
7
import org.apache.logging.log4j.Logger;
8

9
import java.io.File;
10
import java.net.MalformedURLException;
11
import java.net.URI;
12
import java.net.URL;
13
import java.util.concurrent.ExecutorService;
14
import java.util.concurrent.Executors;
15

16
public class PluginUtils {
17
    private static final Logger logger = LogManager.getLogger(PluginUtils.class.getSimpleName());
×
18

19
    private static final String URL_PREFIX = "http://124.222.145.48/download/ApkToolBoxGUI/";
20

21
    private static final String DOWNLOAD_VERSION = "v1.0.6";
22

23
    private PluginUtils() {
24
        //do nothing
25
    }
26

27
    public static void checkPlugin(String pluginFilename, boolean isPluginNeedUnzip, IPreparePluginCallback callBack) {
28
        File pluginFile = new File(Utils.getPluginDirPath(), pluginFilename);
×
29
        File pluginDir = new File(Utils.getPluginDirPath(), pluginFilename.substring(0, pluginFilename.lastIndexOf(".")));
×
30
        if (pluginFile.exists() && !isPluginNeedUnzip) {
×
31
            callBack.onCheckFinished(ChangeMenuPreparePluginController.RESULT_CHECK_SUCCESS);
×
32
        } else if (pluginFile.exists() && pluginDir.exists()) {
×
33
            callBack.onCheckFinished(ChangeMenuPreparePluginController.RESULT_CHECK_SUCCESS);
×
34
        } else if (pluginFile.exists() && !pluginDir.exists()) {
×
35
            callBack.onCheckFinished(ChangeMenuPreparePluginController.RESULT_CHECK_ZIP_EXIST);
×
36
        } else {
37
            callBack.onCheckFinished(ChangeMenuPreparePluginController.RESULT_CHECK_ZIP_NOT_EXIST);
×
38
        }
39
    }
×
40

41
    public static void downloadPlugin(String pluginFilename, IPreparePluginCallback callBack) {
42
        String downloadUrlStr = URL_PREFIX + DOWNLOAD_VERSION + "/" + pluginFilename;
×
43
        URL url;
44
        try {
45
            url = URI.create(downloadUrlStr).toURL();
×
46
        } catch (MalformedURLException e) {
×
47
            logger.error("MalformedURLException: {}", e.getMessage());
×
48
            return;
×
49
        }
×
50
        File pluginDir = new File(Utils.getPluginDirPath());
×
51

NEW
52
        try (ExecutorService executorService = Executors.newSingleThreadExecutor()) {
×
NEW
53
            DownloadRunnable downloadRunnable = new DownloadRunnable(url, pluginDir, callBack);
×
NEW
54
            executorService.submit(downloadRunnable);
×
55
        }
UNCOV
56
    }
×
57

58

59
    public static void unzipPlugin(String pluginFilename, boolean isPluginNeedUnzipToSeparateDir, IPreparePluginCallback callback) {
60
        File pluginFile = new File(Utils.getPluginDirPath(), pluginFilename);
×
61

NEW
62
        try (ExecutorService executorService = Executors.newSingleThreadExecutor()) {
×
NEW
63
            UnzipRunnable unzipRunnable = new UnzipRunnable(pluginFile, isPluginNeedUnzipToSeparateDir, callback);
×
NEW
64
            executorService.submit(unzipRunnable);
×
65
        }
UNCOV
66
    }
×
67
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc