01: /*
02: * JSPWiki - a JSP-based WikiWiki clone. Copyright (C) 2001-2003 Janne Jalkanen
03: * (Janne.Jalkanen@iki.fi) This program is free software; you can redistribute
04: * it and/or modify it under the terms of the GNU Lesser General Public License
05: * as published by the Free Software Foundation; either version 2.1 of the
06: * License, or (at your option) any later version. This program is distributed
07: * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
08: * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
09: * See the GNU Lesser General Public License for more details. You should have
10: * received a copy of the GNU Lesser General Public License along with this
11: * program; if not, write to the Free Software Foundation, Inc., 59 Temple
12: * Place, Suite 330, Boston, MA 02111-1307 USA
13: */
14: package com.ecyrd.jspwiki.auth;
15:
16: import java.security.Principal;
17:
18: /**
19: * Immutable Principal that represents a Group. GroupPrincipals are injected
20: * into a Subject's principal list at the time of authentication (login), and
21: * serve as proxies for Group objects for the purposes of making Java 2 security
22: * policy decisions. We add GroupPrincipals instead of the actual Groups because
23: * calling classes should never be able to obtain a mutable object (Group
24: * memberships can be changed by callers). Administrators who wish to grant
25: * privileges to specific wiki groups via the security policy file should always specify
26: * principals of type GroupPrincipal.
27: * @see com.ecyrd.jspwiki.auth.authorize.Group
28: * @author Andrew Jaquith
29: * @since 2.3.79
30: */
31: public final class GroupPrincipal implements Principal {
32: private final String m_name;
33:
34: /**
35: * Constructs a new GroupPrincipal object with a supplied name.
36: *
37: * @param group the wiki group; cannot be <code>null</code>
38: */
39: public GroupPrincipal(String group) {
40: if (group == null) {
41: throw new IllegalArgumentException(
42: "Group parameter cannot be null.");
43: }
44: m_name = group;
45: }
46:
47: /**
48: * Returns the name of the group principal.
49: * @return the name
50: * @see java.security.Principal#getName()
51: */
52: public final String getName() {
53: return m_name;
54: }
55:
56: /**
57: * Two GroupPrincipals are equal if their names are equal.
58: * @param obj the object to compare
59: * @return the result of the equality test
60: * @see java.lang.Object#equals(java.lang.Object)
61: */
62: public final boolean equals(Object obj) {
63: if (!(obj instanceof GroupPrincipal)) {
64: return false;
65: }
66: GroupPrincipal p = (GroupPrincipal) obj;
67: return p.m_name.equals(m_name);
68: }
69:
70: /**
71: * Returns the hashcode for this object.
72: * @return the hash code
73: * @see java.lang.Object#hashCode()
74: */
75: public final int hashCode() {
76: return m_name.hashCode();
77: }
78:
79: /**
80: * Returns a string representation of this object.
81: * @return the string
82: * @see java.lang.Object#toString()
83: */
84: public final String toString() {
85: return "[GroupPrincipal " + m_name + "]";
86: }
87:
88: }
|