diff --git a/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java b/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java index 0950a381a..ecb9c719d 100755 --- a/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java +++ b/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java @@ -99,10 +99,10 @@ public class CommandLineGATK extends CommandLineExecutable { * @return The application header. */ public static List createApplicationHeader() { - ResourceBundle headerInfo = ResourceBundle.getBundle("StingText"); + ResourceBundle headerInfo = TextFormattingUtils.loadResourceBundle("StingText"); - String versionNumber = headerInfo.getString("org.broadinstitute.sting.gatk.version"); - String timestamp = headerInfo.getString("build.timestamp"); + String versionNumber = headerInfo.containsKey("org.broadinstitute.sting.gatk.version") ? headerInfo.getString("org.broadinstitute.sting.gatk.version") : ""; + String timestamp = headerInfo.containsKey("build.timestamp") ? headerInfo.getString("build.timestamp") : ""; List header = new ArrayList(); header.add(String.format("The Genome Analysis Toolkit (GATK) v%s, Compiled %s",versionNumber,timestamp)); diff --git a/java/src/org/broadinstitute/sting/gatk/WalkerManager.java b/java/src/org/broadinstitute/sting/gatk/WalkerManager.java index fb3d9f2c3..55f67fe08 100755 --- a/java/src/org/broadinstitute/sting/gatk/WalkerManager.java +++ b/java/src/org/broadinstitute/sting/gatk/WalkerManager.java @@ -26,8 +26,6 @@ package org.broadinstitute.sting.gatk; import java.util.*; -import java.io.InputStream; -import java.io.IOException; import org.broadinstitute.sting.gatk.walkers.*; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; @@ -35,6 +33,7 @@ import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.filters.FilterManager; import org.broadinstitute.sting.utils.StingException; import org.broadinstitute.sting.utils.PluginManager; +import org.broadinstitute.sting.utils.TextFormattingUtils; import org.broadinstitute.sting.utils.help.DisplayNameTaglet; import org.broadinstitute.sting.utils.help.DescriptionTaglet; import org.broadinstitute.sting.utils.help.SummaryTaglet; @@ -62,7 +61,7 @@ public class WalkerManager extends PluginManager { public WalkerManager() { super(Walker.class,"walker","Walker"); - helpText = ResourceBundle.getBundle("StingText"); + helpText = TextFormattingUtils.loadResourceBundle("StingText"); } /** diff --git a/java/src/org/broadinstitute/sting/utils/TextFormattingUtils.java b/java/src/org/broadinstitute/sting/utils/TextFormattingUtils.java index 923c44dc1..d8eb7c5d7 100644 --- a/java/src/org/broadinstitute/sting/utils/TextFormattingUtils.java +++ b/java/src/org/broadinstitute/sting/utils/TextFormattingUtils.java @@ -1,10 +1,12 @@ package org.broadinstitute.sting.utils; -import java.util.List; -import java.util.ArrayList; -import java.util.Comparator; +import org.apache.log4j.Logger; + +import java.util.*; import java.util.regex.Pattern; import java.util.regex.Matcher; +import java.io.StringReader; +import java.io.IOException; /** * Common utilities for dealing with text formatting. @@ -13,6 +15,11 @@ import java.util.regex.Matcher; * @version 0.1 */ public class TextFormattingUtils { + /** + * our log, which we want to capture anything from this class + */ + private static Logger logger = Logger.getLogger(TextFormattingUtils.class); + /** * The default line width, for GATK output written to the screen. */ @@ -57,7 +64,30 @@ public class TextFormattingUtils { if(rhs == null) return -1; return lhs.toLowerCase().compareTo(rhs.toLowerCase()); } + } + /** + * Load the contents of a resource bundle with the given name. If no such resource exists, warn the user + * and create an empty bundle. + * @param bundleName The name of the bundle to load. + * @return The best resource bundle that can be found matching the given name. + */ + public static ResourceBundle loadResourceBundle(String bundleName) { + ResourceBundle bundle; + try { + bundle = ResourceBundle.getBundle(bundleName); + } + catch(MissingResourceException ex) { + logger.warn("Unable to load help text. Help output will be sparse."); + // Generate an empty resource bundle. + try { + bundle = new PropertyResourceBundle(new StringReader("")); + } + catch(IOException ioe) { + throw new StingException("No resource bundle found, and unable to create an empty placeholder.",ioe); + } + } + return bundle; } }