blob: 3a526442d7f413b03b5111e12e26b8122343b41f [file] [log] [blame]
/*
* 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.cocoon.i18n;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentException;
import java.util.Locale;
/**
* Bundle Factory implementations are responsible for loading and providing
* particular types of resource bundles, implementors of Bundle interface.
*
* @author <a href="mailto:kpiroumian@apache.org">Konstantin Piroumian</a>
* @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
* @version $Id$
*/
public interface BundleFactory extends Component {
/**
* Bundle factory ROLE name
*/
String ROLE = BundleFactory.class.getName();
/**
* Constants for bundle factory configuration keys
*/
static class ConfigurationKeys {
/**
* Configuration element specifying default location of the
* resource bundles.
*
* @see BundleFactory#select(String, String)
* @see BundleFactory#select(String, java.util.Locale)
*/
public static final String ROOT_DIRECTORY = "catalogue-location";
/**
* Configuration element specifying role of the Store instance to use
* for storing cached bundles
* @since 2.1.8
*/
public static final String STORE_ROLE = "store-role";
/**
* Configuration element specifying delay (in ms) between
* reload checks.
* @since 2.1.8
*/
public static final String RELOAD_INTERVAL = "reload-interval";
}
/**
* Select a bundle based on the catalogue base location, bundle name,
* and the locale name.
*
* @param base catalogue base location (URI)
* @param bundleName bundle name
* @param locale locale name
* @return the bundle
* @exception ComponentException if a bundle is not found
*/
Bundle select(String base, String bundleName, String locale) throws ComponentException;
/**
* Select a bundle based on the catalogue base location, bundle name,
* and the locale.
*
* @param base catalogue base location (URI)
* @param bundleName bundle name
* @param locale locale
* @return the bundle
* @exception ComponentException if a bundle is not found
*/
Bundle select(String base, String bundleName, Locale locale) throws ComponentException;
/**
* Select a bundle based on the catalogue base location, bundle name,
* and the locale.
*
* @param directories catalogue base location (URI)
* @param bundleName bundle name
* @param locale locale
* @return the bundle
* @exception ComponentException if a bundle is not found
*/
Bundle select(String[] directories, String bundleName, Locale locale) throws ComponentException;
/**
* Select a bundle based on the bundle name and the locale name from
* the default catalogue.
*
* @param bundleName bundle name
* @param locale locale name
* @return the bundle
* @exception ComponentException if a bundle is not found
*/
Bundle select(String bundleName, String locale) throws ComponentException;
/**
* Select a bundle based on the bundle name and the locale from
* the default catalogue.
*
* @param bundleName bundle name
* @param locale locale
* @return the bundle
* @exception ComponentException if a bundle is not found
*/
Bundle select(String bundleName, Locale locale) throws ComponentException;
/**
* Releases a bundle back to the bundle factory when it's not needed
* anymore.
* @param bundle the bundle
*/
void release(Bundle bundle);
}