/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.configuration;
import java.net.URL;
import java.io.InputStream;
import java.io.Reader;
import java.io.OutputStream;
import java.io.Writer;
import java.io.File;
import org.apache.commons.configuration.reloading.ReloadingStrategy;
/**
* A persistent configuration loaded and saved to a file.
*
* @author Emmanuel Bourg
* @version $Revision: 529194 $, $Date: 2007-04-16 12:40:42 +0200 (Mo, 16. Apr 2007) $
* @since 1.0-rc2
*/
public interface FileConfiguration extends Configuration
{
/**
* Load the configuration from the underlying URL. If the URL is not
* specified, it attempts to locate the specified file name.
*
* @throws ConfigurationException if an error occurs during the load operation
*/
void load() throws ConfigurationException;
/**
* Locate the specified file and load the configuration.
*
* @param fileName the name of the file loaded
*
* @throws ConfigurationException if an error occurs during the load operation
*/
void load(String fileName) throws ConfigurationException;
/**
* Load the configuration from the specified file.
*
* @param file the loaded file
*
* @throws ConfigurationException if an error occurs during the load operation
*/
void load(File file) throws ConfigurationException;
/**
* Load the configuration from the specified URL.
*
* @param url the URL of the file loaded
*
* @throws ConfigurationException if an error occurs during the load operation
*/
void load(URL url) throws ConfigurationException;
/**
* Load the configuration from the specified stream, using the encoding
* returned by {@link #getEncoding()}.
*
* @param in the input stream
*
* @throws ConfigurationException if an error occurs during the load operation
*/
void load(InputStream in) throws ConfigurationException;
/**
* Load the configuration from the specified stream, using the specified
* encoding. If the encoding is null the default encoding is used.
*
* @param in the input stream
* @param encoding the encoding used. <code>null</code> to use the default encoding
*
* @throws ConfigurationException if an error occurs during the load operation
*/
void load(InputStream in, String encoding) throws ConfigurationException;
/**
* Load the configuration from the specified reader.
*
* @param in the reader
*
* @throws ConfigurationException if an error occurs during the load operation
*/
void load(Reader in) throws ConfigurationException;
/**
* Save the configuration.
*
* @throws ConfigurationException if an error occurs during the save operation
*/
void save() throws ConfigurationException;
/**
* Save the configuration to the specified file.
*
* @param fileName the name of the file to be saved
*
* @throws ConfigurationException if an error occurs during the save operation
*/
void save(String fileName) throws ConfigurationException;
/**
* Save the configuration to the specified file.
*
* @param file specifies the file to be saved
*
* @throws ConfigurationException if an error occurs during the save operation
*/
void save(File file) throws ConfigurationException;
/**
* Save the configuration to the specified URL.
*
* @param url the URL
*
* @throws ConfigurationException if an error occurs during the save operation
*/
void save(URL url) throws ConfigurationException;
/**
* Save the configuration to the specified stream, using the encoding
* returned by {@link #getEncoding()}.
*
* @param out the output stream
*
* @throws ConfigurationException if an error occurs during the save operation
*/
void save(OutputStream out) throws ConfigurationException;
/**
* Save the configuration to the specified stream, using the specified
* encoding. If the encoding is null the default encoding is used.
*
* @param out the output stream
* @param encoding the encoding to be used
* @throws ConfigurationException if an error occurs during the save operation
*/
void save(OutputStream out, String encoding) throws ConfigurationException;
/**
* Save the configuration to the specified writer.
*
* @param out the writer
*
* @throws ConfigurationException if an error occurs during the save operation
*/
void save(Writer out) throws ConfigurationException;
/**
* Return the name of the file.
*
* @return the file name
*/
String getFileName();
/**
* Set the name of the file.
*
* @param fileName the name of the file
*/
void setFileName(String fileName);
/**
* Returns the base path. One way to specify the location of a configuration
* source is by setting its base path and its file name. This method returns
* this base path. The concrete value returned by this method depends on the
* way the location of the configuration file was set. If methods like
* <code>setFile()</code> or <code>setURL()</code> were used, the base
* path typically points to the parent directory of the configuration file
* (e.g. for the URL <code>file:/temp/test.properties</code> the base path
* will be <code>file:/temp/</code>). If the base path was explictly set
* using <code>setBasePath()</code>, this method will return the exact
* value specified here without further modifications.
*
* @return the base path
* @see AbstractFileConfiguration#setBasePath(String)
*/
String getBasePath();
/**
* Sets the base path. The methods <code>setBasePath()</code> and
* <code>setFileName()</code> can be used together to specify the location
* of the configuration file to be loaded. If relative file names are to
* be resolved (e.g. for the include files supported by
* <code>PropertiesConfiguration</code>), this base path will be used.
*
* @param basePath the base path.
*/
void setBasePath(String basePath);
/**
* Return the file where the configuration is stored.
*
* @return the configuration file
*/
File getFile();
/**
* Set the file where the configuration is stored.
*
* @param file the file
*/
void setFile(File file);
/**
* Return the URL where the configuration is stored.
*
* @return the URL of the configuration
*/
URL getURL();
/**
* The URL where the configuration is stored.
*
* @param url the URL
*/
void setURL(URL url);
/**
* Enable or disable the automatical saving of modified properties to the disk.
*
* @param autoSave <code>true</code> to enable, <code>false</code> to disable
* @since 1.1
*/
void setAutoSave(boolean autoSave);
/**
* Tells if properties are automatically saved to the disk.
*
* @return <code>true</code> if auto-saving is enabled, <code>false</code> otherwise
* @since 1.1
*/
boolean isAutoSave();
/**
* Return the reloading strategy.
*
* @return the reloading strategy currently used
* @since 1.1
*/
ReloadingStrategy getReloadingStrategy();
/**
* Set the reloading strategy.
*
* @param strategy the reloading strategy to use
* @since 1.1
*/
void setReloadingStrategy(ReloadingStrategy strategy);
/**
* Reload the configuration.
*
* @since 1.1
*/
void reload();
/**
* Return the encoding used to store the configuration file. If the value
* is null the default encoding is used.
*
* @return the current encoding
* @since 1.1
*/
String getEncoding();
/**
* Set the encoding used to store the configuration file. Set the encoding
* to null to use the default encoding.
*
* @param encoding the encoding to use
* @since 1.1
*/
void setEncoding(String encoding);
}
|