1 /*
2 * $Id: AttributeContext.java 829574 2009-10-25 14:15:31Z apetrelli $
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. 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,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21 package org.apache.tiles;
22
23 import java.util.Map;
24 import java.util.Set;
25
26 /**
27 * Encapsulation of the current state of execution.
28 *
29 * @since Tiles 2.0
30 * @version $Rev: 829574 $ $Date: 2009-10-26 01:15:31 +1100 (Mon, 26 Oct 2009) $
31 */
32 public interface AttributeContext {
33
34 /**
35 * Returns the attribute that will be used to render a template.
36 *
37 * @return The template attribute.
38 * @since 2.1.2
39 */
40 Attribute getTemplateAttribute();
41
42 /**
43 * Sets the template attribute, that will be used to render the template
44 * page.
45 *
46 * @param templateAttribute The template attribute.
47 * @since 2.1.2
48 */
49 void setTemplateAttribute(Attribute templateAttribute);
50
51 /**
52 * Get associated preparer instance.
53 *
54 * @return The preparer name.
55 * @since 2.1.0
56 */
57 String getPreparer();
58
59 /**
60 * Set associated preparer instance.
61 *
62 * @param url The preparer name.
63 * @since 2.1.0
64 */
65 void setPreparer(String url);
66
67 /**
68 * Add all attributes to the context.
69 *
70 * @param newAttributes the attributes to be added.
71 */
72 void addAll(Map<String, Attribute> newAttributes);
73
74 /**
75 * Add all attributes to the context.
76 *
77 * @param defaultAttributes attributes which should be present.
78 */
79 void addMissing(Map<String, Attribute> defaultAttributes);
80
81 /**
82 * Copies the cascaded attributes to this attribute context.
83 *
84 * @param parent The parent context to be used.
85 * @since 2.1.0
86 */
87 void inheritCascadedAttributes(AttributeContext parent);
88
89 /**
90 * Copies all missing attributes from the <code>parent</code> attribute
91 * context to this one.
92 *
93 * @param parent The attribute context to copy attributes from.
94 * @since 2.1.0
95 */
96 void inherit(AttributeContext parent);
97
98 /**
99 * Retrieve the named attribute, either cascaded or not.
100 *
101 * @param name key name for the attribute.
102 * @return Attribute associated with the given name.
103 */
104 Attribute getAttribute(String name);
105
106 /**
107 * Retrieve the attribute that has been defined in this context (i.e. not
108 * cascaded).
109 *
110 * @param name key name for the attribute.
111 * @return Attribute The local attribute associated with the given name, if
112 * present, or <code>null</code> otherwise.
113 * @since 2.1.0
114 */
115 Attribute getLocalAttribute(String name);
116
117 /**
118 * Retrieve the attribute that has been cascaded at upper levels.
119 *
120 * @param name key name for the attribute.
121 * @return Attribute The cascaded attribute associated with the given name,
122 * if present, or <code>null</code> otherwise.
123 * @since 2.1.0
124 */
125 Attribute getCascadedAttribute(String name);
126
127 /**
128 * Returns the names of the local attributes, i.e. the one that have not
129 * been cascaded.
130 *
131 * @return The local attribute names.
132 * @since 2.1.0
133 */
134 Set<String> getLocalAttributeNames();
135
136 /**
137 * Returns the names of the cascaded attributes.
138 *
139 * @return The cascaded attribute names.
140 * @since 2.1.0
141 */
142 Set<String> getCascadedAttributeNames();
143
144 /**
145 * Add the specified attribute. The attribute value will be available only
146 * in the current context, i.e. it is like calling
147 * {@link AttributeContext#putAttribute(String, Attribute, boolean)} with
148 * <code>cascade = false</code>.
149 *
150 * @param name name of the attribute
151 * @param value value of the attribute
152 */
153 void putAttribute(String name, Attribute value);
154
155 /**
156 * Add the specified attribute.
157 *
158 * @param name name of the attribute
159 * @param value value of the attribute
160 * @param cascade If <code>true</code>, the attribute value will be
161 * available in all nested contexts. If <code>false</code>, it will be
162 * available only in the current context.
163 * @since 2.1.0
164 */
165 void putAttribute(String name, Attribute value, boolean cascade);
166
167 /**
168 * Clear the attributes.
169 */
170 void clear();
171 }