diff --git a/src/java/com/samskivert/util/ConfigUtil.java b/src/java/com/samskivert/util/ConfigUtil.java index 86435427..0bab558f 100644 --- a/src/java/com/samskivert/util/ConfigUtil.java +++ b/src/java/com/samskivert/util/ConfigUtil.java @@ -427,8 +427,8 @@ public class ConfigUtil throws IOException { InputStream input = sourceURL.openStream(); + BufferedReader bin = new BufferedReader(new InputStreamReader(input)); try { - BufferedReader bin = new BufferedReader(new InputStreamReader(input)); PropRecord record = new PropRecord(path, sourceURL); boolean started = false; String line; @@ -448,7 +448,7 @@ public class ConfigUtil } return record; } finally { - StreamUtil.close(input); + StreamUtil.close(bin); } } diff --git a/src/java/com/samskivert/util/PropertiesUtil.java b/src/java/com/samskivert/util/PropertiesUtil.java index b04904d1..0d2a9ce2 100644 --- a/src/java/com/samskivert/util/PropertiesUtil.java +++ b/src/java/com/samskivert/util/PropertiesUtil.java @@ -20,6 +20,7 @@ package com.samskivert.util; +import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -27,6 +28,8 @@ import java.io.IOException; import java.util.Enumeration; import java.util.Properties; +import com.samskivert.io.StreamUtil; + /** * Utility functions related to properties objects. */ @@ -175,33 +178,45 @@ public class PropertiesUtil } /** - * Loads up the supplied properties file and returns the specified - * key. Clearly this is an expensive operation and you should load a - * properties file separately if you plan to retrieve multiple keys - * from it. This method, however, is convenient for, say, extracting a - * value from a properties file that contains only one key, like a - * build timestamp properties file, for example. + * Reads and parses the supplied file into a {@link Properties} instance. + */ + public static Properties load (File from) + throws IOException + { + Properties props = new Properties(); + BufferedInputStream bin = new BufferedInputStream(new FileInputStream(from)); + try { + props.load(bin); + return props; + } finally { + StreamUtil.close(bin); + } + } + + /** + * Loads up the supplied properties file and returns the specified key. Clearly this is an + * expensive operation and you should load a properties file separately if you plan to retrieve + * multiple keys from it. This method, however, is convenient for, say, extracting a value from + * a properties file that contains only one key, like a build timestamp properties file, for + * example. * - * @return the value of the key in question or null if no such key - * exists or an error occurred loading the properties file. + * @return the value of the key in question or null if no such key exists or an error occurred + * loading the properties file. */ public static String loadAndGet (File propFile, String key) { try { - Properties props = new Properties(); - props.load(new FileInputStream(propFile)); - return props.getProperty(key); + return load(propFile).getProperty(key); } catch (IOException ioe) { return null; } } /** - * Like {@link #loadAndGet(File,String)} but obtains the properties - * data via the classloader. + * Like {@link #loadAndGet(File,String)} but obtains the properties data via the classloader. * - * @return the value of the key in question or null if no such key - * exists or an error occurred loading the properties file. + * @return the value of the key in question or null if no such key exists or an error occurred + * loading the properties file. */ public static String loadAndGet (String loaderPath, String key) { diff --git a/src/java/com/samskivert/util/TermUtil.java b/src/java/com/samskivert/util/TermUtil.java index c90baea7..063a60e5 100644 --- a/src/java/com/samskivert/util/TermUtil.java +++ b/src/java/com/samskivert/util/TermUtil.java @@ -31,6 +31,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import com.samskivert.io.StreamUtil; + /** * Provides access to the very platform specific concept of the terminal * (ie. vt100, xterm, etc.) in which our code is running. Bear in mind @@ -100,10 +102,11 @@ public class TermUtil */ protected static Dimension getSizeViaResize () { + BufferedReader bin = null; try { Process proc = Runtime.getRuntime().exec("resize"); InputStream in = proc.getInputStream(); - BufferedReader bin = new BufferedReader(new InputStreamReader(in)); + bin = new BufferedReader(new InputStreamReader(in)); Pattern regex = Pattern.compile("([0-9]+)"); String line; int columns = -1, lines = -1; @@ -124,12 +127,17 @@ public class TermUtil if (columns != -1 && lines != -1) { return new Dimension(columns, lines); } + return null; } catch (PatternSyntaxException pse) { + return null; // logging a warning here may be annoying } catch (SecurityException se) { + return null; // logging a warning here may be annoying } catch (IOException ioe) { + return null; // logging a warning here may be annoying + } finally { + StreamUtil.close(bin); } - return null; } /** Converts the string to an integer, returning -1 on any error. */