config.java

来自「一个不错的cache」· Java 代码 · 共 159 行

JAVA
159
字号
/* * Copyright (c) 2002-2003 by OpenSymphony * All rights reserved. */package com.opensymphony.oscache.base;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import java.io.InputStream;import java.util.Properties;/** * Responsible for holding the Cache configuration properties. If the default * constructor is used, this class will load the properties from the * <code>cache.configuration</code>. * * @author   <a href="mailto:fabian.crabus@gurulogic.de">Fabian Crabus</a> * @version  $Revision: 1.2.2.1 $ */public class Config implements java.io.Serializable {    private static final transient Log log = LogFactory.getLog(Config.class);    /**     * Name of the properties file.     */    private final static String PROPERTIES_FILENAME = "/oscache.properties";    /**     * Properties map to hold the cache configuration.     */    private Properties properties = null;    /**     * Create an OSCache Config that loads properties from oscache.properties.     * The file must be present in the root of OSCache's classpath. If the file     * cannot be loaded, an error will be logged and the configuration will     * remain empty.     */    public Config() {        this(null);    }    /**     * Create an OSCache configuration with the specified properties.     * Note that it is the responsibility of the caller to provide valid     * properties as no error checking is done to ensure that required     * keys are present. If you're unsure of what keys should be present,     * have a look at a sample oscache.properties file.     *     * @param p The properties to use for this configuration. If null,     * then the default properties are loaded from the <code>oscache.properties</code>     * file.     */    public Config(Properties p) {        if (log.isDebugEnabled()) {            log.debug("Config() called");        }        if (p == null) {            loadProps();        } else {            this.properties = p;        }    }    /**     * Retrieve the value of the named configuration property. If the property     * cannot be found this method will return <code>null</code>.     *     * @param key The name of the property.     * @return The property value, or <code>null</code> if the value could     * not be found.     *     * @throws IllegalArgumentException if the supplied key is null.     */    public String getProperty(String key) {        if (key == null) {            throw new IllegalArgumentException("key is null");        }        if (properties == null) {            return null;        }        String value = properties.getProperty(key);        return value;    }    /**     * Retrieves all of the configuration properties. This property set     * should be treated as immutable.     *     * @return The configuration properties.     */    public Properties getProperties() {        return properties;    }    public Object get(Object key) {        return properties.get(key);    }    /**     * Sets a configuration property.     *     * @param key   The unique name for this property.     * @param value The value assigned to this property.     *     * @throws IllegalArgumentException if the supplied key is null.     */    public void set(Object key, Object value) {        if (key == null) {            throw new IllegalArgumentException("key is null");        }        if (value == null) {            return;        }        if (properties == null) {            properties = new Properties();        }        properties.put(key, value);    }    /**     * Load the properties file (<code>oscache.properties</code>)     * from the classpath. If the file cannot be found or loaded, an error     * will be logged and no properties will be set.     */    private void loadProps() {        if (log.isDebugEnabled()) {            log.debug("Getting Config");        }        properties = new Properties();        InputStream in = null;        try {            in = Config.class.getResourceAsStream(PROPERTIES_FILENAME);            properties.load(in);            log.info("Properties " + properties);        } catch (Exception e) {            log.error("Error reading " + PROPERTIES_FILENAME + " in CacheAdministrator.loadProps() " + e);            log.error("Ensure the " + PROPERTIES_FILENAME + " file is readable and in your classpath.");        } finally {            try {                in.close();            } catch (Exception e) {                // Ignore errors that occur while closing file            }        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?