Clover coverage report -
Coverage timestamp: So Nov 6 2005 14:19:51 CET
file stats: LOC: 158   Methods: 7
NCLOC: 71   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
Config.java 43,8% 57,6% 57,1% 53,6%
coverage coverage
 1    /*
 2    * Copyright (c) 2002-2003 by OpenSymphony
 3    * All rights reserved.
 4    */
 5    package com.opensymphony.oscache.base;
 6   
 7    import org.apache.commons.logging.Log;
 8    import org.apache.commons.logging.LogFactory;
 9   
 10    import java.io.InputStream;
 11   
 12    import java.util.Properties;
 13   
 14    /**
 15    * Responsible for holding the Cache configuration properties. If the default
 16    * constructor is used, this class will load the properties from the
 17    * <code>cache.configuration</code>.
 18    *
 19    * @author <a href="mailto:fabian.crabus@gurulogic.de">Fabian Crabus</a>
 20    * @version $Revision: 1.1 $
 21    */
 22    public class Config implements java.io.Serializable {
 23    private static final transient Log log = LogFactory.getLog(Config.class);
 24   
 25    /**
 26    * Name of the properties file.
 27    */
 28    private final static String PROPERTIES_FILENAME = "/oscache.properties";
 29   
 30    /**
 31    * Properties map to hold the cache configuration.
 32    */
 33    private Properties properties = null;
 34   
 35    /**
 36    * Create an OSCache Config that loads properties from oscache.properties.
 37    * The file must be present in the root of OSCache's classpath. If the file
 38    * cannot be loaded, an error will be logged and the configuration will
 39    * remain empty.
 40    */
 41  0 public Config() {
 42  0 this(null);
 43    }
 44   
 45    /**
 46    * Create an OSCache configuration with the specified properties.
 47    * Note that it is the responsibility of the caller to provide valid
 48    * properties as no error checking is done to ensure that required
 49    * keys are present. If you're unsure of what keys should be present,
 50    * have a look at a sample oscache.properties file.
 51    *
 52    * @param p The properties to use for this configuration. If null,
 53    * then the default properties are loaded from the <code>oscache.properties</code>
 54    * file.
 55    */
 56  120 public Config(Properties p) {
 57  120 if (log.isDebugEnabled()) {
 58  0 log.debug("Config() called");
 59    }
 60   
 61  120 if (p == null) {
 62  72 loadProps();
 63    } else {
 64  48 this.properties = p;
 65    }
 66    }
 67   
 68    /**
 69    * Retrieve the value of the named configuration property. If the property
 70    * cannot be found this method will return <code>null</code>.
 71    *
 72    * @param key The name of the property.
 73    * @return The property value, or <code>null</code> if the value could
 74    * not be found.
 75    *
 76    * @throws IllegalArgumentException if the supplied key is null.
 77    */
 78  1068 public String getProperty(String key) {
 79  1068 if (key == null) {
 80  4 throw new IllegalArgumentException("key is null");
 81    }
 82   
 83  1064 if (properties == null) {
 84  0 return null;
 85    }
 86   
 87  1064 String value = properties.getProperty(key);
 88  1064 return value;
 89    }
 90   
 91    /**
 92    * Retrieves all of the configuration properties. This property set
 93    * should be treated as immutable.
 94    *
 95    * @return The configuration properties.
 96    */
 97  0 public Properties getProperties() {
 98  0 return properties;
 99    }
 100   
 101  78 public Object get(Object key) {
 102  78 return properties.get(key);
 103    }
 104   
 105    /**
 106    * Sets a configuration property.
 107    *
 108    * @param key The unique name for this property.
 109    * @param value The value assigned to this property.
 110    *
 111    * @throws IllegalArgumentException if the supplied key is null.
 112    */
 113  0 public void set(Object key, Object value) {
 114  0 if (key == null) {
 115  0 throw new IllegalArgumentException("key is null");
 116    }
 117   
 118  0 if (value == null) {
 119  0 return;
 120    }
 121   
 122  0 if (properties == null) {
 123  0 properties = new Properties();
 124    }
 125   
 126  0 properties.put(key, value);
 127    }
 128   
 129    /**
 130    * Load the properties file (<code>oscache.properties</code>)
 131    * from the classpath. If the file cannot be found or loaded, an error
 132    * will be logged and no properties will be set.
 133    */
 134  72 private void loadProps() {
 135  72 if (log.isDebugEnabled()) {
 136  0 log.debug("Getting Config");
 137    }
 138   
 139  72 properties = new Properties();
 140   
 141  72 InputStream in = null;
 142   
 143  72 try {
 144  72 in = Config.class.getResourceAsStream(PROPERTIES_FILENAME);
 145  72 properties.load(in);
 146  72 log.info("Properties " + properties);
 147    } catch (Exception e) {
 148  0 log.error("Error reading " + PROPERTIES_FILENAME + " in CacheAdministrator.loadProps() " + e);
 149  0 log.error("Ensure the " + PROPERTIES_FILENAME + " file is readable and in your classpath.");
 150    } finally {
 151  72 try {
 152  72 in.close();
 153    } catch (Exception e) {
 154    // Ignore errors that occur while closing file
 155    }
 156    }
 157    }
 158    }