Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
Definition |
|
| 1.3636363636363635;1.364 |
1 | /* | |
2 | * $Id: Definition.java 832840 2009-11-04 18:44:25Z 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 static org.apache.tiles.CompareUtil.*; | |
24 | ||
25 | import java.util.Map; | |
26 | ||
27 | /** | |
28 | * A definition, i.e. a template with (completely or not) filled attributes. | |
29 | * Attributes of a template can be defined with the help of this class.<br> | |
30 | * It can be used as a data transfer object used for registering new | |
31 | * definitions with the Container. | |
32 | * | |
33 | * @since Tiles 2.0 | |
34 | * @version $Rev: 832840 $ $Date: 2009-11-05 05:44:25 +1100 (Thu, 05 Nov 2009) $ | |
35 | */ | |
36 | public class Definition extends BasicAttributeContext { | |
37 | /** | |
38 | * Extends attribute value. | |
39 | */ | |
40 | protected String inherit; | |
41 | /** | |
42 | * Definition name. | |
43 | */ | |
44 | 17 | protected String name = null; |
45 | ||
46 | /** | |
47 | * Constructor. | |
48 | */ | |
49 | 11 | public Definition() { |
50 | 11 | } |
51 | ||
52 | /** | |
53 | * Copy Constructor. | |
54 | * Create a new definition initialized with parent definition. | |
55 | * Do a shallow copy : attributes are shared between copies, but not the Map | |
56 | * containing attributes. | |
57 | * | |
58 | * @param definition The definition to copy. | |
59 | */ | |
60 | public Definition(Definition definition) { | |
61 | 5 | super(definition); |
62 | 5 | this.name = definition.name; |
63 | 5 | this.inherit = definition.inherit; |
64 | 5 | } |
65 | ||
66 | /** | |
67 | * Constructor. | |
68 | * @param name The name of the definition. | |
69 | * @param templateAttribute The template attribute of the definition. | |
70 | * @param attributes The attribute map of the definition. | |
71 | * | |
72 | * @since 2.1.2 | |
73 | */ | |
74 | public Definition(String name, Attribute templateAttribute, | |
75 | Map<String, Attribute> attributes) { | |
76 | 1 | super(attributes); |
77 | 1 | this.name = name; |
78 | 1 | this.templateAttribute = templateAttribute; |
79 | 1 | } |
80 | ||
81 | /** | |
82 | * Access method for the name property. | |
83 | * | |
84 | * @return the current value of the name property | |
85 | */ | |
86 | public String getName() { | |
87 | 2 | return name; |
88 | } | |
89 | ||
90 | /** | |
91 | * Sets the value of the name property. | |
92 | * | |
93 | * @param aName the new value of the name property | |
94 | */ | |
95 | public void setName(String aName) { | |
96 | 7 | name = aName; |
97 | 7 | } |
98 | ||
99 | /** | |
100 | * Set extends. | |
101 | * | |
102 | * @param name Name of the extended definition. | |
103 | */ | |
104 | public void setExtends(String name) { | |
105 | 5 | inherit = name; |
106 | 5 | } |
107 | ||
108 | /** | |
109 | * Get extends. | |
110 | * | |
111 | * @return Name of the extended definition. | |
112 | */ | |
113 | public String getExtends() { | |
114 | 1 | return inherit; |
115 | } | |
116 | ||
117 | ||
118 | ||
119 | /** {@inheritDoc} */ | |
120 | @Override | |
121 | public boolean equals(Object obj) { | |
122 | 4 | Definition def = (Definition) obj; |
123 | 4 | return nullSafeEquals(name, def.name) |
124 | && nullSafeEquals(inherit, def.inherit) && super.equals(def); | |
125 | } | |
126 | ||
127 | /** {@inheritDoc} */ | |
128 | @Override | |
129 | public int hashCode() { | |
130 | 1 | return nullSafeHashCode(name) + nullSafeHashCode(inherit) |
131 | + super.hashCode(); | |
132 | } | |
133 | ||
134 | /** | |
135 | * Get extends flag. | |
136 | * | |
137 | * @return <code>true</code> if this definition extends another. | |
138 | */ | |
139 | public boolean isExtending() { | |
140 | 2 | return inherit != null; |
141 | } | |
142 | ||
143 | /** | |
144 | * Returns a description of the attributes. | |
145 | * | |
146 | * @return A string representation of the content of this definition. | |
147 | */ | |
148 | @Override | |
149 | public String toString() { | |
150 | 3 | return "{name=" |
151 | + name | |
152 | + ", template=" | |
153 | + (templateAttribute != null ? templateAttribute.getValue() : "<null>") | |
154 | + ", role=" | |
155 | + (templateAttribute != null ? templateAttribute.getRoles() : "<null>") | |
156 | + ", preparerInstance=" | |
157 | + preparer | |
158 | + ", attributes=" | |
159 | + attributes | |
160 | + "}"; | |
161 | } | |
162 | } |