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.AbstractList;
20
21 import org.apache.jetspeed.om.page.SecurityConstraintImpl;
22
23 /***
24 * SecurityConstraintList
25 *
26 * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
27 * @version $Id$
28 */
29 class SecurityConstraintList extends AbstractList
30 {
31 private SecurityConstraintsImpl constraints;
32
33 SecurityConstraintList(SecurityConstraintsImpl constraints)
34 {
35 super();
36 this.constraints = constraints;
37 }
38
39 /***
40 * validateConstraintForAdd
41 *
42 * Validates constraint to be added to this list.
43 *
44 * @param constraint to add
45 * @return list element to add
46 */
47 private SecurityConstraintImpl validateConstraintForAdd(SecurityConstraintImpl constraint)
48 {
49
50 if (constraint == null)
51 {
52 throw new NullPointerException("Unable to add null to list.");
53 }
54 if ((constraints.getSecurityConstraintClass() != null) &&
55 !constraints.getSecurityConstraintClass().isInstance(constraint))
56 {
57 throw new ClassCastException("Unable to add list element instance: expected " + constraints.getSecurityConstraintClass().getName() + ", got " + constraint.getClass().getName() + ".");
58 }
59 return constraint;
60 }
61
62
63
64
65 public void add(int index, Object element)
66 {
67
68
69 if ((index < 0) || (index > constraints.accessConstraints().size()))
70 {
71 throw new IndexOutOfBoundsException("Unable to add to list at index: " + index);
72 }
73
74 SecurityConstraintImpl constraint = validateConstraintForAdd((SecurityConstraintImpl)element);
75
76 constraints.accessConstraints().add(index, constraint);
77
78 if (index > 0)
79 {
80 constraint.setApplyOrder(((SecurityConstraintImpl)constraints.accessConstraints().get(index-1)).getApplyOrder() + 1);
81 }
82 else
83 {
84 constraint.setApplyOrder(0);
85 }
86
87 for (int i = index, limit = constraints.accessConstraints().size() - 1; (i < limit); i++)
88 {
89 SecurityConstraintImpl nextConstraint = (SecurityConstraintImpl)constraints.accessConstraints().get(i + 1);
90 if (nextConstraint.getApplyOrder() <= constraint.getApplyOrder())
91 {
92
93 nextConstraint.setApplyOrder(constraint.getApplyOrder() + 1);
94 constraint = nextConstraint;
95 }
96 else
97 {
98
99 break;
100 }
101 }
102
103 constraints.clearAllSecurityConstraints();
104 }
105
106
107
108
109 public Object get(int index)
110 {
111
112 return constraints.accessConstraints().get(index);
113 }
114
115
116
117
118 public Object remove(int index)
119 {
120
121 Object removed = constraints.accessConstraints().remove(index);
122 if (removed != null)
123 {
124
125 constraints.clearAllSecurityConstraints();
126 }
127 return removed;
128 }
129
130
131
132
133 public Object set(int index, Object element)
134 {
135
136
137 SecurityConstraintImpl newConstraint = validateConstraintForAdd((SecurityConstraintImpl)element);
138
139 SecurityConstraintImpl constraint = (SecurityConstraintImpl)constraints.accessConstraints().set(index, newConstraint);
140
141 newConstraint.setApplyOrder(constraint.getApplyOrder());
142
143 constraints.clearAllSecurityConstraints();
144
145 return constraint;
146 }
147
148
149
150
151 public int size()
152 {
153
154 return constraints.accessConstraints().size();
155 }
156 }