KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > avalon > cornerstone > services > store > Store


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12  * implied.
13  *
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 package org.apache.avalon.cornerstone.services.store;
19
20 import org.apache.avalon.framework.service.ServiceException;
21 import org.apache.avalon.framework.service.ServiceSelector;
22
23 /**
24  * Allows selection from a number of configured Repositories.
25  * Selection criterion is passed in as a <tt>Configuration</tt>
26  * object.
27  *
28  * @see Repository
29  * @see ObjectRepository
30  * @see StreamRepository
31  * @author <a HREF="mailto:fede@apache.org">Federico Barbieri</a>
32  */

33 public interface Store
34     extends ServiceSelector
35 {
36     String JavaDoc ROLE = Store.class.getName();
37
38     /**
39      * Selects a Repository configured for the given <tt>policy</tt>.
40      * The <tt>policy</tt> must be an instance of
41      * {@link org.apache.avalon.framework.configuration.Configuration}.
42      * The following attributes are used by the Store and thus are mandatory
43      * in the <tt>policy</tt> parameter:
44      * <pre>
45      * &lt;repository destinationURL="[URL of this repository]"
46      * type="[repository type e.g. OBJECT, STREAM or MAIL]"
47      * model="[repository model e.g. PERSISTENT, CACHE]"&gt;
48      * [additional configuration]
49      * &lt;/repository&gt;
50      * </pre>
51      * <p>
52      * The <tt>policy</tt> is used both to select the appropriate
53      * Repository and to configure it.
54      * </p>
55      *
56      * @param policy a {@link org.apache.avalon.framework.configuration.Configuration} object identifying the sought Repository
57      * @return requested {@link Repository}
58      * @throws ServiceException if no repository matches <tt>policy</tt>
59      */

60     Object JavaDoc select( Object JavaDoc policy )
61         throws ServiceException;
62 }
63
Popular Tags