Author: henning Date: Sat Sep 16 03:46:37 2006 New Revision: 446852 URL: http://svn.apache.org/viewvc?view=rev&rev=446852 Log: Make sure that the streams are closed in any case. Do some attempts at error reporting.
Modified: jakarta/velocity/engine/trunk/src/java/org/apache/velocity/texen/util/PropertiesUtil.java Modified: jakarta/velocity/engine/trunk/src/java/org/apache/velocity/texen/util/PropertiesUtil.java URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/texen/util/PropertiesUtil.java?view=diff&rev=446852&r1=446851&r2=446852 ============================================================================== --- jakarta/velocity/engine/trunk/src/java/org/apache/velocity/texen/util/PropertiesUtil.java (original) +++ jakarta/velocity/engine/trunk/src/java/org/apache/velocity/texen/util/PropertiesUtil.java Sat Sep 16 03:46:37 2006 @@ -17,7 +17,6 @@ */ import java.io.FileInputStream; -import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.StringTokenizer; @@ -43,22 +42,32 @@ * @return a properties instance filled with the properties found * in the file or an empty instance if no file was found. */ - public Properties load(String propertiesFile) + public Properties load(final String propertiesFile) { - Properties properties; + Properties properties = null; String templatePath = Generator.getInstance().getTemplatePath(); - if (templatePath != null) + try + { + if (templatePath != null) + { + properties = loadFromTemplatePath(propertiesFile); + } + else + { + properties = loadFromClassPath(propertiesFile); + } + } + catch (RuntimeException e) { - properties = loadFromTemplatePath(propertiesFile); + throw e; } - else + catch (Exception e) { - properties = loadFromClassPath(propertiesFile); + throw new RuntimeException("Could not load properties: " + e.getMessage()); } return properties; - } /** @@ -74,7 +83,8 @@ * @return a properties instance loaded with the properties from * the file. If no file can be found it returns an empty instance. */ - protected Properties loadFromTemplatePath(String propertiesFile) + protected Properties loadFromTemplatePath(final String propertiesFile) + throws Exception { Properties properties = new Properties(); String templatePath = Generator.getInstance().getTemplatePath(); @@ -95,6 +105,7 @@ while (st.hasMoreTokens()) { String templateDir = st.nextToken(); + InputStream stream = null; try { // If the properties file is being pulled from the @@ -117,14 +128,18 @@ fullPath = templateDir + "/" + propertiesFile; } - properties.load(new FileInputStream(fullPath)); + stream = new FileInputStream(fullPath); + properties.load(stream); // first pick wins, we don't need to go further since // we found a valid file. break; } - catch (IOException e) + finally { - // do nothing + if (stream != null) + { + stream.close(); + } } } return properties; @@ -137,11 +152,14 @@ * @return a properties instance loaded with the properties from * the file. If no file can be found it returns an empty instance. */ - protected Properties loadFromClassPath(String propertiesFile) + protected Properties loadFromClassPath(final String propertiesName) + throws Exception { Properties properties = new Properties(); ClassLoader classLoader = this.getClass().getClassLoader(); + InputStream inputStream = null; + try { // This is a hack for now to make sure that properties @@ -151,18 +169,20 @@ // and this hack will allow those same templates // that use $generator.templatePath to work in // JAR files. - if (propertiesFile.startsWith("$generator")) - { - propertiesFile = propertiesFile.substring( - "$generator.templatePath/".length()); - } - InputStream inputStream = classLoader.getResourceAsStream(propertiesFile); + String propertiesFile = propertiesName.startsWith("$generator") + ? propertiesName.substring("$generator.templatePath/".length()) + : propertiesName; + + inputStream = classLoader.getResourceAsStream(propertiesFile); properties.load(inputStream); } - catch (IOException ioe) + finally { - // do nothing + if (inputStream != null) + { + inputStream.close(); + } } return properties; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]