View Javadoc

1   /* This file is part of COPAL (COntext Provisioning for All).
2    *
3    * COPAL is a part of SM4All (Smart hoMes for All) project.
4    *
5    * COPAL is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU Lesser General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    *
10   * COPAL is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU Lesser General Public License for more details.
14   *
15   * You should have received a copy of the GNU Lesser General Public License
16   * along with COPAL. If not, see <http://www.gnu.org/licenses/>.
17   */
18  package at.ac.tuwien.infosys.sm4all.copal.api.util;
19  
20  import at.ac.tuwien.infosys.sm4all.copal.api.ContextException;
21  
22  /**
23   * The interface which represents a registry.
24   * 
25   * @param <K> the type of keys maintained by this registry.
26   * @param <V> the type of values maintained by this registry.
27   * @author sanjin
28   */
29  public interface Registry<K, V> {
30  
31      /**
32       * Register specified value.
33       * 
34       * @param value the value.
35       * @throws ContextException if registration fails.
36       */
37      void register(V value) throws ContextException;
38  
39      /**
40       * Unregister a value with specified key.
41       * 
42       * @param key the key.
43       * @throws ContextException if unregistration fails.
44       */
45      void unregister(K key) throws ContextException;
46  
47      /**
48       * Returns if a value with specified key is currently registered.
49       * 
50       * @param key the key.
51       * @return if a value with specified key is currently registered.
52       */
53      boolean isRegistered(K key);
54  
55      /**
56       * Returns the value with specified key.
57       * 
58       * @param key the key.
59       * @return the value with specified key; or <code>null</code> if there is no
60       *         such value registered.
61       */
62      V get(K key);
63  
64      /**
65       * Returns all currently registered values.
66       * 
67       * @return all currently registered values.
68       */
69      V[] getAll();
70  }