1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.om.page.impl;
18
19 import java.util.HashMap;
20 import java.util.Iterator;
21 import java.util.List;
22 import java.util.Map;
23
24 import org.apache.jetspeed.om.common.SecurityConstraint;
25 import org.apache.jetspeed.om.page.PageSecurity;
26 import org.apache.jetspeed.om.page.SecurityConstraintsDef;
27 import org.apache.jetspeed.page.document.impl.DocumentImpl;
28 import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
29
30 /***
31 * PageSecurityImpl
32 *
33 * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
34 * @version $Id$
35 */
36 public class PageSecurityImpl extends DocumentImpl implements PageSecurity
37 {
38 private List constraintsDefs;
39 private List globalConstraintsRefs;
40
41 private PageSecurityConstraintsDefList securityConstraintsDefs;
42 private Map securityConstraintsDefsMap;
43 private PageSecurityConstraintsRefList globalSecurityConstraintsRefs;
44
45 public PageSecurityImpl()
46 {
47 super(null);
48 }
49
50 /***
51 * accessConstraintsDefs
52 *
53 * Access mutable persistent collection member for List wrappers.
54 *
55 * @return persistent collection
56 */
57 List accessConstraintsDefs()
58 {
59
60 if (constraintsDefs == null)
61 {
62 constraintsDefs = DatabasePageManagerUtils.createList();
63 }
64 return constraintsDefs;
65 }
66
67 /***
68 * accessGlobalConstraintsRefs
69 *
70 * Access mutable persistent collection member for List wrappers.
71 *
72 * @return persistent collection
73 */
74 List accessGlobalConstraintsRefs()
75 {
76
77 if (globalConstraintsRefs == null)
78 {
79 globalConstraintsRefs = DatabasePageManagerUtils.createList();
80 }
81 return globalConstraintsRefs;
82 }
83
84 /***
85 * clearSecurityConstraintsDefsMap
86 *
87 * Clear previously cached security constraints definitions map.
88 */
89 synchronized void clearSecurityConstraintsDefsMap()
90 {
91 securityConstraintsDefsMap = null;
92 }
93
94
95
96
97 public SecurityConstraint newSecurityConstraint()
98 {
99
100 return new PageSecuritySecurityConstraintImpl();
101 }
102
103
104
105
106 public List getSecurityConstraintsDefs()
107 {
108
109
110
111 if (securityConstraintsDefs == null)
112 {
113 securityConstraintsDefs = new PageSecurityConstraintsDefList(this);
114 }
115 return securityConstraintsDefs;
116 }
117
118
119
120
121 public SecurityConstraintsDef newSecurityConstraintsDef()
122 {
123
124 return new SecurityConstraintsDefImpl();
125 }
126
127
128
129
130 public void setSecurityConstraintsDefs(List definitions)
131 {
132
133
134
135 List securityConstraintsDefs = getSecurityConstraintsDefs();
136 if (definitions != securityConstraintsDefs)
137 {
138
139 securityConstraintsDefs.clear();
140 if (definitions != null)
141 {
142 securityConstraintsDefs.addAll(definitions);
143 }
144 }
145
146 clearSecurityConstraintsDefsMap();
147 }
148
149
150
151
152 public synchronized SecurityConstraintsDef getSecurityConstraintsDef(String name)
153 {
154
155
156 if ((getSecurityConstraintsDefs() != null) && (securityConstraintsDefsMap == null))
157 {
158 securityConstraintsDefsMap = new HashMap((getSecurityConstraintsDefs().size() * 2) + 1);
159 Iterator definitionsIter = getSecurityConstraintsDefs().iterator();
160 while (definitionsIter.hasNext())
161 {
162 SecurityConstraintsDef definition = (SecurityConstraintsDef)definitionsIter.next();
163 String definitionName = definition.getName();
164 if (!securityConstraintsDefsMap.containsKey(definitionName))
165 {
166 securityConstraintsDefsMap.put(definitionName, definition);
167 }
168 }
169 }
170
171 if (securityConstraintsDefsMap != null)
172 {
173 return (SecurityConstraintsDef)securityConstraintsDefsMap.get(name);
174 }
175 return null;
176 }
177
178
179
180
181 public List getGlobalSecurityConstraintsRefs()
182 {
183
184
185
186 if (globalSecurityConstraintsRefs == null)
187 {
188 globalSecurityConstraintsRefs = new PageSecurityConstraintsRefList(this);
189 }
190 return globalSecurityConstraintsRefs;
191 }
192
193
194
195
196 public void setGlobalSecurityConstraintsRefs(List constraintsRefs)
197 {
198
199
200
201 List globalSecurityConstraintsRefs = getGlobalSecurityConstraintsRefs();
202 if (constraintsRefs != globalSecurityConstraintsRefs)
203 {
204
205 globalSecurityConstraintsRefs.clear();
206 if (constraintsRefs != null)
207 {
208 globalSecurityConstraintsRefs.addAll(constraintsRefs);
209 }
210 }
211 }
212
213
214
215
216 public String getType()
217 {
218 return DOCUMENT_TYPE;
219 }
220 }