From 31589778cae7c9a6b0ef53da0f946d6cfab19030 Mon Sep 17 00:00:00 2001 From: vraskulin Date: Thu, 26 Jan 2017 20:58:40 +0300 Subject: [PATCH] Try/finally refactored to try with resources --- .../card/dl/sources/TokensMtgImageSource.java | 53 ++--------- .../plugins/card/images/DownloadPictures.java | 91 +++++-------------- .../plugins/counter/CounterPluginImpl.java | 30 ++---- .../java/mage/server/util/SystemUtil.java | 13 +-- .../test/serverside/base/MageTestBase.java | 22 ++--- .../serverside/base/MageTestPlayerBase.java | 22 ++--- .../src/main/java/mage/util/ClassScanner.java | 16 +--- 7 files changed, 61 insertions(+), 186 deletions(-) diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/TokensMtgImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/TokensMtgImageSource.java index 74b1fdb0a5..fbc1ad88e1 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/TokensMtgImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/TokensMtgImageSource.java @@ -27,6 +27,9 @@ */ package org.mage.plugins.card.dl.sources; +import org.apache.log4j.Logger; +import org.mage.plugins.card.images.CardDownloadData; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -36,8 +39,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.log4j.Logger; -import org.mage.plugins.card.images.CardDownloadData; /** * @@ -184,30 +185,18 @@ public class TokensMtgImageSource implements CardImageSource { tokensData = new ArrayList<>(); // get tokens data from resource file - InputStream inputStream = null; - try { - inputStream = this.getClass().getResourceAsStream("/tokens-mtg-onl-list.csv"); + try(InputStream inputStream = this.getClass().getResourceAsStream("/tokens-mtg-onl-list.csv")) { List fileTokensData = parseTokensData(inputStream); tokensData.addAll(fileTokensData); } catch (Exception exception) { logger.warn("Failed to get tokens description from resource file tokens-mtg-onl-list.csv", exception); - } finally { - if (inputStream != null) { - try { - inputStream.close(); - } catch (Exception e) { - logger.error("Input stream close failed:", e); - } - } } // description on site may contain new information // try to add it - try { - URL url = new URL("http://tokens.mtg.onl/data/SetsWithTokens.csv"); - inputStream = url.openStream(); + URL url = new URL("http://tokens.mtg.onl/data/SetsWithTokens.csv"); + try(InputStream inputStream = url.openStream()) { List siteTokensData = parseTokensData(inputStream); - List newTokensData = new ArrayList<>(); for (TokenData siteData : siteTokensData) { boolean isNew = true; @@ -227,14 +216,6 @@ public class TokensMtgImageSource implements CardImageSource { tokensData.addAll(newTokensData); } catch (Exception exception) { logger.warn("Failed to get tokens description from tokens.mtg.onl", exception); - } finally { - if (inputStream != null) { - try { - inputStream.close(); - } catch (Exception e) { - logger.error("Input stream close failed:", e); - } - } } } } @@ -245,12 +226,9 @@ public class TokensMtgImageSource implements CardImageSource { private List parseTokensData(InputStream inputStream) throws IOException { List newTokensData = new ArrayList<>(); - InputStreamReader inputReader = null; - BufferedReader reader = null; - try { + try(InputStreamReader inputReader = new InputStreamReader(inputStream, "Cp1252"); + BufferedReader reader = new BufferedReader(inputReader)) { // we have to specify encoding to read special comma - inputReader = new InputStreamReader(inputStream, "Cp1252"); - reader = new BufferedReader(inputReader); reader.readLine(); // skip header String line = reader.readLine(); @@ -282,21 +260,6 @@ public class TokensMtgImageSource implements CardImageSource { line = reader.readLine(); } - } finally { - if (inputReader != null) { - try { - inputReader.close(); - } catch (Exception e) { - logger.error("Input reader close failed:", e); - } - } - if (reader != null) { - try { - reader.close(); - } catch (Exception e) { - logger.error("Buffered reader close failed:", e); - } - } } return newTokensData; diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java index 0405a759c8..439c89479a 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java @@ -1,45 +1,5 @@ package org.mage.plugins.card.images; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Graphics2D; -import java.awt.image.BufferedImage; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.InetSocketAddress; -import java.net.Proxy; -import java.net.URL; -import java.net.URLConnection; -import java.nio.file.AccessDeniedException; -import java.util.*; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicBoolean; -import javax.imageio.IIOImage; -import javax.imageio.ImageIO; -import javax.imageio.ImageWriteParam; -import javax.imageio.ImageWriter; -import javax.imageio.stream.FileImageOutputStream; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.ComboBoxModel; -import javax.swing.DefaultBoundedRangeModel; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JDialog; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JProgressBar; import mage.cards.repository.CardInfo; import mage.client.constants.Constants; import mage.client.dialog.PreferencesDialog; @@ -51,18 +11,27 @@ import net.java.truevfs.access.TFileOutputStream; import net.java.truevfs.access.TVFS; import net.java.truevfs.kernel.spec.FsSyncException; import org.apache.log4j.Logger; -import org.mage.plugins.card.dl.sources.AltMtgOnlTokensImageSource; -import org.mage.plugins.card.dl.sources.CardImageSource; -import org.mage.plugins.card.dl.sources.GrabbagImageSource; -import org.mage.plugins.card.dl.sources.MagicCardsImageSource; -import org.mage.plugins.card.dl.sources.MagidexImageSource; -import org.mage.plugins.card.dl.sources.MtgOnlTokensImageSource; -import org.mage.plugins.card.dl.sources.MythicspoilerComSource; -import org.mage.plugins.card.dl.sources.TokensMtgImageSource; -import org.mage.plugins.card.dl.sources.WizardCardsImageSource; +import org.mage.plugins.card.dl.sources.*; import org.mage.plugins.card.properties.SettingsManager; import org.mage.plugins.card.utils.CardImageUtils; +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.stream.FileImageOutputStream; +import javax.swing.*; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.*; +import java.nio.file.AccessDeniedException; +import java.util.*; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; + public class DownloadPictures extends DefaultBoundedRangeModel implements Runnable { private static final Logger logger = Logger.getLogger(DownloadPictures.class); @@ -376,11 +345,9 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab return list; } - BufferedReader reader = null; - InputStreamReader input = null; - try { - input = new InputStreamReader(in); - reader = new BufferedReader(input); + + try(InputStreamReader input = new InputStreamReader(in); + BufferedReader reader = new BufferedReader(input)) { String line; line = reader.readLine(); @@ -425,22 +392,6 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab } catch (Exception ex) { logger.error(ex); throw new RuntimeException("DownloadPictures : readFile() error"); - } finally { - if (input != null) { - try { - input.close(); - } catch (Exception e) { - logger.error("Input close failed:", e); - } - } - if (reader != null) { - try { - reader.close(); - } catch (Exception e) { - logger.error("Reader close failed:", e); - } - } - } return list; } diff --git a/Mage.Plugins/Mage.Counter.Plugin/src/main/java/org/mage/plugins/counter/CounterPluginImpl.java b/Mage.Plugins/Mage.Counter.Plugin/src/main/java/org/mage/plugins/counter/CounterPluginImpl.java index dc4e93b206..7c7efdf462 100644 --- a/Mage.Plugins/Mage.Counter.Plugin/src/main/java/org/mage/plugins/counter/CounterPluginImpl.java +++ b/Mage.Plugins/Mage.Counter.Plugin/src/main/java/org/mage/plugins/counter/CounterPluginImpl.java @@ -1,22 +1,15 @@ package org.mage.plugins.counter; -import java.io.EOFException; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; - import mage.interfaces.PluginException; import mage.interfaces.plugin.CounterPlugin; import net.xeoh.plugins.base.annotations.PluginImplementation; import net.xeoh.plugins.base.annotations.events.Init; import net.xeoh.plugins.base.annotations.events.PluginLoaded; import net.xeoh.plugins.base.annotations.meta.Author; - import org.apache.log4j.Logger; +import java.io.*; + /** * Implementation of {@link CounterPlugin}.
* Stores data in data folder. @@ -72,12 +65,10 @@ public class CounterPluginImpl implements CounterPlugin { public void addGamePlayed() throws PluginException { if (!isLoaded) return; File data = new File(PLUGIN_DATA_FOLDER_PATH + File.separator + DATA_STORAGE_FILE); - ObjectInputStream ois = null; - ObjectOutputStream oos = null; if (data.exists()) { int prev = 0; - try { - ois = new ObjectInputStream(new FileInputStream(data)); + + try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream(data))) { Object o = ois.readObject(); CounterBean c; if (o instanceof CounterBean) { @@ -90,13 +81,10 @@ public class CounterPluginImpl implements CounterPlugin { throw new PluginException(e); } catch (ClassNotFoundException e) { throw new PluginException(e); - } finally { - if (ois != null) try { ois.close(); } catch (Exception e) {} } - try { + try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(data))) { synchronized (this) { - oos = new ObjectOutputStream(new FileOutputStream(data)); CounterBean c = new CounterBean(); c.setGamesPlayed(prev+1); oos.writeObject(c); @@ -104,8 +92,6 @@ public class CounterPluginImpl implements CounterPlugin { } } catch (IOException e) { throw new PluginException(e); - } finally { - if (oos != null) try { oos.close(); } catch (Exception e) {} } } else { log.error("Counter plugin: data file doesn't exist, please restart plugin."); @@ -120,10 +106,8 @@ public class CounterPluginImpl implements CounterPlugin { return 0; } if (data.exists()) { - ObjectInputStream ois = null; - try { + try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream(data))) { synchronized (this) { - ois = new ObjectInputStream(new FileInputStream(data)); Object o = ois.readObject(); CounterBean c = null; if (o instanceof CounterBean) { @@ -138,8 +122,6 @@ public class CounterPluginImpl implements CounterPlugin { throw new PluginException(e); } catch (ClassNotFoundException e) { throw new PluginException(e); - } finally { - if (ois != null) try { ois.close(); } catch (Exception e) {} } } else { log.error("Counter plugin: data file doesn't exist, please restart plugin."); diff --git a/Mage.Server/src/main/java/mage/server/util/SystemUtil.java b/Mage.Server/src/main/java/mage/server/util/SystemUtil.java index 439feaca0b..15d276dfd4 100644 --- a/Mage.Server/src/main/java/mage/server/util/SystemUtil.java +++ b/Mage.Server/src/main/java/mage/server/util/SystemUtil.java @@ -56,7 +56,7 @@ public class SystemUtil { try (Scanner scanner = new Scanner(f)) { while (scanner.hasNextLine()) { String line = scanner.nextLine().trim(); - if (line.trim().isEmpty() || line.startsWith("#")) { + if (line.isEmpty() || line.startsWith("#")) { continue; } @@ -69,11 +69,12 @@ public class SystemUtil { String zone = m.group(1); String nickname = m.group(2); - Player player = findPlayer(game, nickname); - if (player == null) { + Optional playerOptional = findPlayer(game, nickname); + if (!playerOptional.isPresent()) { logger.warn("Was skipped: " + line); continue; } + Player player = playerOptional.get(); Zone gameZone; if ("hand".equalsIgnoreCase(zone)) { @@ -148,13 +149,13 @@ public class SystemUtil { * @param name * @return */ - private static Player findPlayer(Game game, String name) { + private static Optional findPlayer(Game game, String name) { for (Player player : game.getPlayers().values()) { if (player.getName().equals(name)) { - return player; + return Optional.of(player); } } - return null; + return Optional.empty(); } public static String sanitize(String input) { diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java index 0d74ac0d8c..0db848daf4 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java @@ -1,15 +1,5 @@ package org.mage.test.serverside.base; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FilenameFilter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Scanner; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import mage.cards.Card; import mage.cards.repository.CardInfo; import mage.cards.repository.CardRepository; @@ -35,6 +25,13 @@ import org.junit.BeforeClass; import org.mage.test.player.RandomPlayer; import org.mage.test.player.TestPlayer; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FilenameFilter; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Base class for all tests. * @@ -181,8 +178,7 @@ public abstract class MageTestBase { protected void parseScenario(String filename) throws FileNotFoundException { parserState = ParserState.INIT; File f = new File(filename); - Scanner scanner = new Scanner(f); - try { + try(Scanner scanner = new Scanner(f)) { while (scanner.hasNextLine()) { String line = scanner.nextLine().trim(); if (line == null || line.isEmpty() || line.startsWith("#")) { @@ -198,8 +194,6 @@ public abstract class MageTestBase { } parseLine(line); } - } finally { - scanner.close(); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java index 6568f377b3..9cdd524421 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java @@ -1,15 +1,5 @@ package org.mage.test.serverside.base; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FilenameFilter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Scanner; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import mage.cards.Card; import mage.cards.repository.CardInfo; import mage.cards.repository.CardRepository; @@ -33,6 +23,13 @@ import org.apache.log4j.Logger; import org.junit.BeforeClass; import org.mage.test.player.TestPlayer; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FilenameFilter; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Base class for all tests. * @@ -167,8 +164,7 @@ public abstract class MageTestPlayerBase { protected void parseScenario(String filename) throws FileNotFoundException { parserState = ParserState.INIT; File f = new File(filename); - Scanner scanner = new Scanner(f); - try { + try(Scanner scanner = new Scanner(f)) { while (scanner.hasNextLine()) { String line = scanner.nextLine().trim(); if (line == null || line.isEmpty() || line.startsWith("#")) { @@ -184,8 +180,6 @@ public abstract class MageTestPlayerBase { } parseLine(line); } - } finally { - scanner.close(); } } diff --git a/Mage/src/main/java/mage/util/ClassScanner.java b/Mage/src/main/java/mage/util/ClassScanner.java index 71253e3e65..ad672ca1a7 100644 --- a/Mage/src/main/java/mage/util/ClassScanner.java +++ b/Mage/src/main/java/mage/util/ClassScanner.java @@ -32,11 +32,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.net.URL; import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.TreeSet; +import java.util.*; import java.util.jar.JarEntry; import java.util.jar.JarInputStream; @@ -111,9 +107,8 @@ public class ClassScanner { List cards = new ArrayList<>(); if (!file.exists()) return cards; - JarInputStream jarFile = null; - try { - jarFile = new JarInputStream(new FileInputStream(file)); + + try(JarInputStream jarFile = new JarInputStream(new FileInputStream(file))) { while (true) { JarEntry jarEntry = jarFile.getNextJarEntry(); if (jarEntry == null) { @@ -127,11 +122,6 @@ public class ClassScanner { } } } catch (IOException ex) { - } finally { - try { - if(jarFile != null) jarFile.close(); - } catch (IOException ex) { - } } return cards; }