001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.cocoon.i18n;
018:
019: import org.apache.avalon.framework.component.Component;
020: import org.apache.avalon.framework.component.ComponentException;
021:
022: import java.util.Locale;
023:
024: /**
025: * Bundle Factory implementations are responsible for loading and providing
026: * particular types of resource bundles, implementors of Bundle interface.
027: *
028: * @author <a href="mailto:kpiroumian@apache.org">Konstantin Piroumian</a>
029: * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
030: * @version $Id: BundleFactory.java 433543 2006-08-22 06:22:54Z crossley $
031: */
032: public interface BundleFactory extends Component {
033:
034: /**
035: * Bundle factory ROLE name
036: */
037: String ROLE = BundleFactory.class.getName();
038:
039: /**
040: * Constants for bundle factory configuration keys
041: */
042: static class ConfigurationKeys {
043: /**
044: * Configuration element specifying default location of the
045: * resource bundles.
046: *
047: * @see BundleFactory#select(String, String)
048: * @see BundleFactory#select(String, java.util.Locale)
049: */
050: public static final String ROOT_DIRECTORY = "catalogue-location";
051:
052: /**
053: * Configuration element specifying role of the Store instance to use
054: * for storing cached bundles
055: * @since 2.1.8
056: */
057: public static final String STORE_ROLE = "store-role";
058:
059: /**
060: * Configuration element specifying delay (in ms) between
061: * reload checks.
062: * @since 2.1.8
063: */
064: public static final String RELOAD_INTERVAL = "reload-interval";
065: }
066:
067: /**
068: * Select a bundle based on the catalogue base location, bundle name,
069: * and the locale name.
070: *
071: * @param base catalogue base location (URI)
072: * @param bundleName bundle name
073: * @param locale locale name
074: * @return the bundle
075: * @exception ComponentException if a bundle is not found
076: */
077: Bundle select(String base, String bundleName, String locale)
078: throws ComponentException;
079:
080: /**
081: * Select a bundle based on the catalogue base location, bundle name,
082: * and the locale.
083: *
084: * @param base catalogue base location (URI)
085: * @param bundleName bundle name
086: * @param locale locale
087: * @return the bundle
088: * @exception ComponentException if a bundle is not found
089: */
090: Bundle select(String base, String bundleName, Locale locale)
091: throws ComponentException;
092:
093: /**
094: * Select a bundle based on the catalogue base location, bundle name,
095: * and the locale.
096: *
097: * @param directories catalogue base location (URI)
098: * @param bundleName bundle name
099: * @param locale locale
100: * @return the bundle
101: * @exception ComponentException if a bundle is not found
102: */
103: Bundle select(String[] directories, String bundleName, Locale locale)
104: throws ComponentException;
105:
106: /**
107: * Select a bundle based on the bundle name and the locale name from
108: * the default catalogue.
109: *
110: * @param bundleName bundle name
111: * @param locale locale name
112: * @return the bundle
113: * @exception ComponentException if a bundle is not found
114: */
115: Bundle select(String bundleName, String locale)
116: throws ComponentException;
117:
118: /**
119: * Select a bundle based on the bundle name and the locale from
120: * the default catalogue.
121: *
122: * @param bundleName bundle name
123: * @param locale locale
124: * @return the bundle
125: * @exception ComponentException if a bundle is not found
126: */
127: Bundle select(String bundleName, Locale locale)
128: throws ComponentException;
129:
130: /**
131: * Releases a bundle back to the bundle factory when it's not needed
132: * anymore.
133: * @param bundle the bundle
134: */
135: void release(Bundle bundle);
136: }
|