01: /*
02: * CoadunationLib: The coaduntion implementation library.
03: * Copyright (C) 2006 Rift IT Contracting
04: *
05: * This library is free software; you can redistribute it and/or
06: * modify it under the terms of the GNU Lesser General Public
07: * License as published by the Free Software Foundation; either
08: * version 2.1 of the License, or (at your option) any later version.
09: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library; if not, write to the Free Software
17: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18: *
19: * Role.java
20: *
21: * The role object that contains the list principals. If a user or object has
22: * a principal that matches, than access will be granted to run as that role.
23: */
24:
25: // the package name
26: package com.rift.coad.lib.security;
27:
28: // java imports
29: import java.util.Set;
30: import java.util.Iterator;
31:
32: // log 4 j imports
33: import org.apache.log4j.Logger;
34:
35: /**
36: * The role object that contains the list principals. If a user or object has
37: * a principal that matches, than access will be granted to run as that role.
38: *
39: * @author Brett Chaldecott
40: */
41: public class Role implements PrincipalContainer {
42: // log
43: private static Logger log = Logger.getLogger(Role.class.getName());
44:
45: // the classes private member variables
46: private String name = null;
47: private Set principals = null;
48:
49: /**
50: * Creates a new instance of a role using the supplied principal list
51: *
52: * @param name The name of the role.
53: * @param principals The list of principals assigned to this role.
54: */
55: public Role(String name, Set principals) {
56: this .name = name;
57: this .principals = principals;
58: }
59:
60: /**
61: * The getter method for the name of this role.
62: *
63: * @return The string containing the name of this role.
64: */
65: public String getName() {
66: return name;
67: }
68:
69: /**
70: * This method returns the list of principals.
71: *
72: * @return The list of principals.
73: */
74: public Set getPrincipals() {
75: return principals;
76: }
77:
78: /**
79: * This method will return true if one of the principals match
80: *
81: * @return TRUE if one of the principals in sets match.
82: * @param queryPrincipals The set of principals that will be used to query
83: * this role.
84: */
85: public boolean canAccessRole(Set queryPrincipals) {
86: for (Iterator iter = queryPrincipals.iterator(); iter.hasNext();) {
87: String principal = (String) iter.next();
88: if (principals.contains(principal)) {
89: return true;
90: }
91: }
92: return false;
93: }
94: }
|