1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity;
17
18 import java.io.Serializable;
19
20 import java.util.Iterator;
21 import java.util.List;
22 import java.util.Vector;
23
24
25 /***
26 * Holds a group of {@link ConfigAttribute}s that are associated with a given
27 * secure object target.
28 *
29 * <p>
30 * All the <code>ConfigAttributeDefinition</code>s associated with a given
31 * {@link org.acegisecurity.intercept.AbstractSecurityInterceptor} are
32 * stored in an {@link org.acegisecurity.intercept.ObjectDefinitionSource}.
33 * </p>
34 *
35 * @author Ben Alex
36 * @version $Id: ConfigAttributeDefinition.java,v 1.7 2005/11/17 00:55:49 benalex Exp $
37 */
38 public class ConfigAttributeDefinition implements Serializable {
39
40
41 private List configAttributes = new Vector();
42
43
44
45 public ConfigAttributeDefinition() {
46 super();
47 }
48
49
50
51 /***
52 * Returns an <code>Iterator</code> over all the
53 * <code>ConfigAttribute</code>s defined by this
54 * <code>ConfigAttributeDefinition</code>.
55 *
56 * <P>
57 * Allows <code>AccessDecisionManager</code>s and other classes to loop
58 * through every configuration attribute associated with a target secure
59 * object.
60 * </p>
61 *
62 * @return all the configuration attributes stored by the instance, or
63 * <code>null</code> if an <code>Iterator</code> is unavailable
64 */
65 public Iterator getConfigAttributes() {
66 return this.configAttributes.iterator();
67 }
68
69 /***
70 * Adds a <code>ConfigAttribute</code> that is related to the secure object
71 * method.
72 *
73 * @param newConfigAttribute the new configuration attribute to add
74 */
75 public void addConfigAttribute(ConfigAttribute newConfigAttribute) {
76 this.configAttributes.add(newConfigAttribute);
77 }
78
79 /***
80 * Indicates whether the specified <code>ConfigAttribute</code> is
81 * contained within this <code>ConfigAttributeDefinition</code>.
82 *
83 * @param configAttribute the attribute to locate
84 *
85 * @return <code>true</code> if the specified <code>ConfigAttribute</code>
86 * is contained, <code>false</code> otherwise
87 */
88 public boolean contains(ConfigAttribute configAttribute) {
89 return configAttributes.contains(configAttribute);
90 }
91
92 public boolean equals(Object obj) {
93 if (obj instanceof ConfigAttributeDefinition) {
94 ConfigAttributeDefinition test = (ConfigAttributeDefinition) obj;
95
96 List testAttrs = new Vector();
97 Iterator iter = test.getConfigAttributes();
98
99 while (iter.hasNext()) {
100 ConfigAttribute attr = (ConfigAttribute) iter.next();
101 testAttrs.add(attr);
102 }
103
104 if (this.configAttributes.size() != testAttrs.size()) {
105 return false;
106 }
107
108 for (int i = 0; i < this.configAttributes.size(); i++) {
109 if (!this.configAttributes.get(i).equals(testAttrs.get(i))) {
110 return false;
111 }
112 }
113
114 return true;
115 }
116
117 return false;
118 }
119
120 /***
121 * Returns the number of <code>ConfigAttribute</code>s defined by this
122 * <code>ConfigAttributeDefinition</code>.
123 *
124 * @return the number of <code>ConfigAttribute</code>s contained
125 */
126 public int size() {
127 return configAttributes.size();
128 }
129
130 public String toString() {
131 return this.configAttributes.toString();
132 }
133 }