1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.jetspeed.security.impl;
18
19 import java.util.Collection;
20 import java.util.HashSet;
21 import java.util.Iterator;
22 import java.util.LinkedList;
23 import java.util.List;
24 import java.util.Set;
25
26
27 /***
28 * PrincipalsSet - provides an ordered 'set' of principals required
29 * for some profiling rules that are dependent on order of insert.
30 *
31 * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
32 * @version $Id: $
33 */
34
35 public class PrincipalsSet implements Set
36 {
37 List principals = new LinkedList();
38 Set set = new HashSet();
39
40 public PrincipalsSet()
41 {}
42
43 /* (non-Javadoc)
44 * @see java.util.Collection#size()
45 */
46 public int size()
47 {
48 return principals.size();
49 }
50
51 /* (non-Javadoc)
52 * @see java.util.Collection#clear()
53 */
54 public void clear()
55 {
56 set.clear();
57 principals.clear();
58 }
59
60 /* (non-Javadoc)
61 * @see java.util.Collection#isEmpty()
62 */
63 public boolean isEmpty()
64 {
65 return principals.isEmpty();
66 }
67
68 /* (non-Javadoc)
69 * @see java.util.Collection#toArray()
70 */
71 public Object[] toArray()
72 {
73 return principals.toArray();
74 }
75
76 /* (non-Javadoc)
77 * @see java.util.Collection#add(java.lang.Object)
78 */
79 public boolean add(Object o)
80 {
81 if (set.add(o))
82 {
83 principals.add(o);
84 return true;
85 }
86 return false;
87 }
88
89 /* (non-Javadoc)
90 * @see java.util.Collection#contains(java.lang.Object)
91 */
92 public boolean contains(Object o)
93 {
94 return set.contains(o);
95 }
96
97 /* (non-Javadoc)
98 * @see java.util.Collection#remove(java.lang.Object)
99 */
100 public boolean remove(Object o)
101 {
102 set.remove(o);
103 return principals.remove(o);
104 }
105
106 /* (non-Javadoc)
107 * @see java.util.Collection#addAll(java.util.Collection)
108 */
109 public boolean addAll(Collection c)
110 {
111 set.addAll(c);
112 return principals.addAll(c);
113 }
114
115 /* (non-Javadoc)
116 * @see java.util.Collection#containsAll(java.util.Collection)
117 */
118 public boolean containsAll(Collection c)
119 {
120 return set.containsAll(c);
121 }
122
123 /* (non-Javadoc)
124 * @see java.util.Collection#removeAll(java.util.Collection)
125 */
126 public boolean removeAll(Collection c)
127 {
128 set.removeAll(c);
129 return principals.removeAll(c);
130 }
131
132 /* (non-Javadoc)
133 * @see java.util.Collection#retainAll(java.util.Collection)
134 */
135 public boolean retainAll(Collection c)
136 {
137 set.retainAll(c);
138 return principals.retainAll(c);
139 }
140
141 /* (non-Javadoc)
142 * @see java.util.Collection#iterator()
143 */
144 public Iterator iterator()
145 {
146 return principals.iterator();
147 }
148
149 /* (non-Javadoc)
150 * @see java.util.Collection#toArray(java.lang.Object[])
151 */
152 public Object[] toArray(Object[] a)
153 {
154 return principals.toArray(a);
155 }
156
157 }