1 package org.codehaus.plexus.context;
2
3 import java.util.Map;
4
5 /*
6 * Copyright 2001-2006 Codehaus Foundation.
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21 /**
22 * Context is a Map of arbitrary data associated with the container.
23 */
24 public interface Context {
25 /**
26 * Returns true if this context contains a value for the specified key.
27 *
28 * @param key the key to search
29 * @return true if the key was found; false otherwise
30 */
31 boolean contains(Object key);
32
33 /**
34 * Returns the value of the key. If the key can't be found it will throw a exception.
35 *
36 * @param key the key of the value to look up.
37 * @return returns the value associated with the key
38 * @throws ContextException if the key doesn't exist
39 */
40 Object get(Object key) throws ContextException;
41
42 /**
43 * Utility method to retrieve containerContext data.
44 * The returned Map is an unmodifiable view.
45 * @return the containerContext data
46 * @since 1.0-alpha-18
47 */
48 Map<Object, Object> getContextData();
49
50 /**
51 * Adds the item to the containerContext.
52 *
53 * @param key the key of the item
54 * @param value the item
55 * @throws IllegalStateException if this context is read-only
56 */
57 public void put(Object key, Object value) throws IllegalStateException;
58
59 // todo [dain] this isn't needed anymore since containers are no longer nestable
60 /**
61 * Hides the item in the containerContext.
62 * After remove(key) has been called, a get(key)
63 * will always fail, even if the parent containerContext
64 * has such a mapping.
65 *
66 * @param key the items key
67 * @throws IllegalStateException if this context is read-only
68 */
69 void hide(Object key) throws IllegalStateException;
70
71 /**
72 * Make the containerContext read-only.
73 * Any attempt to write to the containerContext via put()
74 * will result in an IllegalStateException.
75 */
76 void makeReadOnly();
77 }