Return-Path: X-Original-To: apmail-jspwiki-commits-archive@www.apache.org Delivered-To: apmail-jspwiki-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id F1B7010F0E for ; Thu, 26 Dec 2013 20:10:51 +0000 (UTC) Received: (qmail 60069 invoked by uid 500); 26 Dec 2013 20:10:51 -0000 Delivered-To: apmail-jspwiki-commits-archive@jspwiki.apache.org Received: (qmail 60046 invoked by uid 500); 26 Dec 2013 20:10:51 -0000 Mailing-List: contact commits-help@jspwiki.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jspwiki.apache.org Delivered-To: mailing list commits@jspwiki.apache.org Received: (qmail 60039 invoked by uid 99); 26 Dec 2013 20:10:51 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 26 Dec 2013 20:10:51 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 26 Dec 2013 20:10:48 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8A5B523888FE; Thu, 26 Dec 2013 20:10:26 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1553572 - /jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java Date: Thu, 26 Dec 2013 20:10:26 -0000 To: commits@jspwiki.apache.org From: juanpablo@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20131226201026.8A5B523888FE@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: juanpablo Date: Thu Dec 26 20:10:26 2013 New Revision: 1553572 URL: http://svn.apache.org/r1553572 Log: format + use of IOUtils.closeQuietly to close streams + removed compilation warnings Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java?rev=1553572&r1=1553571&r2=1553572&view=diff ============================================================================== --- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java (original) +++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/PropertyReader.java Thu Dec 26 20:10:26 2013 @@ -22,12 +22,19 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.*; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Properties; import javax.servlet.ServletContext; +import org.apache.commons.io.IOUtils; +import org.apache.log4j.Logger; import org.apache.wiki.util.TextUtil; + /** * Property Reader for the WikiEngine. Reads the properties for the WikiEngine * and implements the feature of cascading properties and variable substitution, @@ -37,8 +44,10 @@ import org.apache.wiki.util.TextUtil; * * @since 2.5.x */ -public final class PropertyReader -{ +public final class PropertyReader { + + private static final Logger LOG = Logger.getLogger( PropertyReader.class ); + /** * Path to the base property file, usually overridden by values provided in * a jspwiki-custom.properties file @@ -101,68 +110,46 @@ public final class PropertyReader * @param context A Servlet Context which is used to find the properties * @return A filled Properties object with all the cascaded properties in place */ - public static Properties loadWebAppProps( ServletContext context ) - { - String propertyFile = getInitParameter( context, PARAM_CUSTOMCONFIG); + public static Properties loadWebAppProps( ServletContext context ) { + String propertyFile = getInitParameter( context, PARAM_CUSTOMCONFIG ); InputStream propertyStream = null; - try - { - // we'll need this to get at our properties files in the classpath - Class config_class = Class.forName("org.apache.wiki.PropertyReader"); - + try { // // Figure out where our properties lie. // - if( propertyFile == null ) - { - context.log("No " + PARAM_CUSTOMCONFIG + " defined for this context, " + - "looking for custom properties file with default name of: " + CUSTOM_JSPWIKI_CONFIG); + if( propertyFile == null ) { + context.log( "No " + PARAM_CUSTOMCONFIG + " defined for this context, " + + "looking for custom properties file with default name of: " + CUSTOM_JSPWIKI_CONFIG ); // Use the custom property file at the default location - propertyStream = config_class.getResourceAsStream(CUSTOM_JSPWIKI_CONFIG); - } - else - { + propertyStream = PropertyReader.class.getResourceAsStream( CUSTOM_JSPWIKI_CONFIG ); + } else { context.log(PARAM_CUSTOMCONFIG + " defined, using " + propertyFile + " as the custom properties file."); propertyStream = new FileInputStream( new File(propertyFile) ); } Properties props = getDefaultProperties(); - if( propertyStream == null ) - { + if( propertyStream == null ) { context.log("No custom property file found, relying on JSPWiki defaults."); - } - else - { + } else { props.load( propertyStream ); } //this will add additional properties to the default ones: - context.log("Loading cascading properties..."); + context.log( "Loading cascading properties..." ); //now load the cascade (new in 2.5) - loadWebAppPropsCascade(context, props); + loadWebAppPropsCascade( context, props ); //finally expand the variables (new in 2.5) - expandVars(props); + expandVars( props ); return props; - } - catch( Exception e ) - { - context.log( Release.APPNAME - +": Unable to load and setup properties from jspwiki.properties. "+e.getMessage() ); - } - finally - { - try - { - if( propertyStream != null ) propertyStream.close(); - } - catch( IOException e ) - { - context.log("Unable to close property stream - something must be seriously wrong."); - } + } catch( Exception e ) { + context.log( Release.APPNAME + ": Unable to load and setup properties from jspwiki.properties. " + + e.getMessage() ); + } finally { + IOUtils.closeQuietly( propertyStream ); } return null; @@ -174,31 +161,17 @@ public final class PropertyReader * * @return A property set. */ - public static Properties getDefaultProperties() - { + public static Properties getDefaultProperties() { Properties props = new Properties(); InputStream in = PropertyReader.class.getResourceAsStream( DEFAULT_JSPWIKI_CONFIG ); - if( in != null ) - { - try - { + if( in != null ) { + try { props.load( in ); - } - catch( IOException e ) - { - System.err.println("Unable to load default propertyfile '" + DEFAULT_JSPWIKI_CONFIG + "'" + e.getMessage()); - } - finally - { - try - { - if( in != null ) in.close(); - } - catch( IOException e ) - { - System.err.println("Unable to close stream for property file - something must be seriously wrong."); - } + } catch( IOException e ) { + LOG.error( "Unable to load default propertyfile '" + DEFAULT_JSPWIKI_CONFIG + "'" + e.getMessage(), e ); + } finally { + IOUtils.closeQuietly( in ); } } @@ -212,36 +185,20 @@ public final class PropertyReader * @return A property set consisting of the default property set and custom property set, with * the latter's properties replacing the former for any common values */ - public static Properties getCombinedProperties(String fileName) - { + public static Properties getCombinedProperties( String fileName ) { Properties newPropertySet = getDefaultProperties(); InputStream in = PropertyReader.class.getResourceAsStream( fileName ); - if( in != null ) - { - try - { + if( in != null ) { + try { newPropertySet.load( in ); + } catch( IOException e ) { + LOG.error( "Unable to load propertyfile '" + fileName + "'" + e.getMessage(), e ); + } finally { + IOUtils.closeQuietly( in ); } - catch( IOException e ) - { - System.err.println("Unable to load propertyfile '" + fileName + "'" + e.getMessage()); - } - finally - { - try - { - if( in != null ) in.close(); - } - catch( IOException e ) - { - System.err.println("Unable to close stream for property file - something must be seriously wrong."); - } - } - } - else - { - System.err.println("*** Custom property file \"" + fileName + "\" not found, relying on default file alone."); + } else { + LOG.error( "*** Custom property file \"" + fileName + "\" not found, relying on default file alone." ); } return newPropertySet; @@ -253,12 +210,11 @@ public final class PropertyReader * returns null. This permits both Servlet- and System-defined cascading * properties. */ - private static String getInitParameter( ServletContext context, String name ) - { - String value = context.getInitParameter(name); + private static String getInitParameter( ServletContext context, String name ) { + String value = context.getInitParameter( name ); return ( value != null ) ? value - : System.getProperty(name) ; + : System.getProperty( name ) ; } @@ -269,11 +225,9 @@ public final class PropertyReader * @param defaultProperties properties to merge the cascading properties to * @since 2.5.x */ - private static void loadWebAppPropsCascade(ServletContext context, Properties defaultProperties) - { - if( getInitParameter(context, PARAM_CUSTOMCONFIG_CASCADEPREFIX + "1") == null ) - { - context.log(" No cascading properties defined for this context"); + private static void loadWebAppPropsCascade( ServletContext context, Properties defaultProperties ) { + if( getInitParameter( context, PARAM_CUSTOMCONFIG_CASCADEPREFIX + "1" ) == null ) { + context.log( " No cascading properties defined for this context" ); return; } @@ -281,44 +235,27 @@ public final class PropertyReader int depth = 0; boolean more = true; InputStream propertyStream = null; - while (more) - { + while( more ) { depth++; - String propertyFile = getInitParameter(context, PARAM_CUSTOMCONFIG_CASCADEPREFIX + depth); + String propertyFile = getInitParameter( context, PARAM_CUSTOMCONFIG_CASCADEPREFIX + depth ); - if (propertyFile == null) - { + if( propertyFile == null ) { more = false; break; } - try - { - context.log(" Reading additional properties from " + propertyFile + " and merge to cascade."); + try { + context.log( " Reading additional properties from " + propertyFile + " and merge to cascade." ); Properties additionalProps = new Properties(); - propertyStream = new FileInputStream(new File(propertyFile)); + propertyStream = new FileInputStream( new File( propertyFile ) ); additionalProps.load(propertyStream); defaultProperties.putAll(additionalProps); - } - catch (Exception e) - { - context.log(" " + Release.APPNAME - + ": Unable to load and setup properties from " + propertyFile + "." - + e.getMessage()); - } - finally - { - try - { - if( propertyStream != null ) - { - propertyStream.close(); - } - } - catch (IOException e) - { - context.log(" Unable to close property stream - something must be seriously wrong."); - } + } catch( Exception e ) { + context.log( " " + Release.APPNAME + + ": Unable to load and setup properties from " + propertyFile + "." + + e.getMessage() ); + } finally { + IOUtils.closeQuietly( propertyStream ); } } @@ -343,53 +280,45 @@ public final class PropertyReader * * @param properties - properties to expand; */ - public static void expandVars(Properties properties) - { + public static void expandVars(Properties properties) { //get variable name/values from properties... - Map vars = new HashMap(); - Enumeration propertyList = properties.propertyNames(); - while( propertyList.hasMoreElements() ) - { - String propertyName = (String)propertyList.nextElement(); - String propertyValue = properties.getProperty(propertyName); - - if ( propertyName.startsWith(PARAM_VAR_DECLARATION) ) - { - String varName = propertyName.substring(4, propertyName.length()).trim(); + Map< String, String > vars = new HashMap< String, String >(); + Enumeration< ? > propertyList = properties.propertyNames(); + while( propertyList.hasMoreElements() ) { + String propertyName = ( String )propertyList.nextElement(); + String propertyValue = properties.getProperty( propertyName ); + + if ( propertyName.startsWith( PARAM_VAR_DECLARATION ) ) { + String varName = propertyName.substring( 4, propertyName.length() ).trim(); String varValue = propertyValue.trim(); - vars.put(varName, varValue); + vars.put( varName, varValue ); } } //now, substitute $ values in property values with vars... propertyList = properties.propertyNames(); - while( propertyList.hasMoreElements() ) - { - String propertyName = (String)propertyList.nextElement(); - String propertyValue = properties.getProperty(propertyName); + while( propertyList.hasMoreElements() ) { + String propertyName = ( String )propertyList.nextElement(); + String propertyValue = properties.getProperty( propertyName ); //skip var properties itself... - if ( propertyName.startsWith(PARAM_VAR_DECLARATION) ) - { + if( propertyName.startsWith( PARAM_VAR_DECLARATION ) ) { continue; } - Iterator iter = vars.entrySet().iterator(); - while ( iter.hasNext() ) - { - Map.Entry entry = (Map.Entry)iter.next(); - String varName = (String)entry.getKey(); - String varValue = (String)entry.getValue(); + Iterator< Map.Entry< String, String > > iter = vars.entrySet().iterator(); + while ( iter.hasNext() ) { + Map.Entry< String, String > entry = iter.next(); + String varName = entry.getKey(); + String varValue = entry.getValue(); //replace old property value, using the same variabe. If we don't overwrite //the same one the next loop works with the original one again and //multiple var expansion won't work... - propertyValue = - TextUtil.replaceString( propertyValue, PARAM_VAR_IDENTIFIER + varName, varValue ); + propertyValue = TextUtil.replaceString( propertyValue, PARAM_VAR_IDENTIFIER + varName, varValue ); //add the new PropertyValue to the properties properties.put(propertyName, propertyValue); - } } }