001: package org.jacorb.config;
002:
003: /*
004: * JacORB - a free Java ORB
005: *
006: * Copyright (C) 1997-2004 Gerald Brose.
007: *
008: * This library is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU Library General Public
010: * License as published by the Free Software Foundation; either
011: * version 2 of the License, or (at your option) any later version.
012: *
013: * This library is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
016: * Library General Public License for more details.
017: *
018: * You should have received a copy of the GNU Library General Public
019: * License along with this library; if not, write to the Free
020: * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
021: */
022:
023: import java.util.List;
024:
025: import org.apache.avalon.framework.configuration.ConfigurationException;
026: import org.apache.avalon.framework.logger.Logger;
027: import org.jacorb.orb.ORB;
028:
029: /**
030: * ORB configuration objects are read-only representations of files with
031: * configuration properties.
032: *
033: * ORB configuration options for a given name are looked up and loaded as follows:
034: * <ol>
035: * <li>System properties are loaded first, but only to get properties
036: * that affect further property loading
037: * <li>the file <tt>orb.properties</tt> is loaded from java.home/lib
038: * and user.home if it exists
039: * <li>if the ORBid is property is set, the file <tt>ORBid.properties</tt> is
040: * loaded from jacorb.config.dir/etc, if that exists, or jacorb.home/etc, or '.'
041: * If ORBid is not set, the default file <tt>jacorb.properties</tt>
042: * is loaded from these places.
043: * <li>Custom properties are loaded from each file name listed int the system property
044: * <tt>custom.props</tt>
045: * <li>To also support packaged servers in jar files, the configuration
046: * file lookup mechanism finally tries to load named properties files
047: * (<tt>ORBid.properties</tt>, or <tt>jacorb.properties</tt>) from
048: * the classpath, if it cannot find them in the config dictionary.
049: * <li> After all property files have been loaded, the System properties are
050: * loaded again, so that command-line properties take precedence
051: * <li> Finally, properties hard-coded and passed in through ORB.init() are
052: * loaded.
053: *</ol>
054: *
055: * The Configuration object is also used by JacORB components to
056: * retreive their Logger objects.
057: *
058: * @author Gerald Brose, XTRADYNE Technologies
059: * @version $Id: Configuration.java,v 1.18 2006/06/26 06:51:46 alphonse.bendt Exp $
060: */
061:
062: public interface Configuration extends
063: org.apache.avalon.framework.configuration.Configuration {
064: /**
065: * @return the ORB for which this configuration was created
066: */
067:
068: ORB getORB();
069:
070: /**
071: * @param name the name of the logger, which also functions
072: * as a log category
073: * @return a Logger for a given name
074: */
075:
076: Logger getNamedLogger(String name);
077:
078: /**
079: * For a property that has a list of comma-separated values,
080: * this method returns these values as a list of Strings.
081: * If the property is not set, an empty list is returned.
082: */
083:
084: List getAttributeList(String key);
085:
086: /**
087: * Create an object from the given property. The class's default
088: * constructor will be used.
089: *
090: * @return an object of the class of the keys value, or null, if
091: * no class name is found for the key
092: * @throws ConfigurationException
093: */
094:
095: Object getAttributeAsObject(String key)
096: throws ConfigurationException;
097:
098: Object getAttributeAsObject(String key, String defaultValue)
099: throws ConfigurationException;
100:
101: boolean getAttributeAsBoolean(String key)
102: throws ConfigurationException;
103:
104: boolean getAttributeAsBoolean(String key, boolean defaultValue);
105:
106: String getLoggerName(Class clazz);
107:
108: void setAttribute(String key, String value);
109:
110: /**
111: * return all attribute names that start
112: * with the specified prefix
113: */
114: List getAttributeNamesWithPrefix(String string);
115: }
|