View Javadoc

1   /**
2    * This file Copyright (c) 2003-2010 Magnolia International
3    * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10   * This file is distributed in the hope that it will be
11   * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12   * implied warranty of MERCHANTABILITY or FITNESS FOR A
13   * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14   * Redistribution, except as permitted by whichever of the GPL
15   * or MNA you select, is prohibited.
16   *
17   * 1. For the GPL license (GPL), you can redistribute and/or
18   * modify this file under the terms of the GNU General
19   * Public License, Version 3, as published by the Free Software
20   * Foundation.  You should have received a copy of the GNU
21   * General Public License, Version 3 along with this program;
22   * if not, write to the Free Software Foundation, Inc., 51
23   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24   *
25   * 2. For the Magnolia Network Agreement (MNA), this file
26   * and the accompanying materials are made available under the
27   * terms of the MNA which accompanies this distribution, and
28   * is available at http://www.magnolia-cms.com/mna.html
29   *
30   * Any modifications to this file must keep this entire header
31   * intact.
32   *
33   */
34  package info.magnolia.jaas.principal;
35  
36  import info.magnolia.cms.security.auth.PrincipalCollection;
37  
38  import java.security.Principal;
39  import java.util.ArrayList;
40  import java.util.Collection;
41  import java.util.Iterator;
42  
43  import org.apache.commons.lang.StringUtils;
44  import org.apache.commons.lang.builder.ToStringBuilder;
45  import org.apache.commons.lang.builder.ToStringStyle;
46  
47  
48  /**
49   * Date: Jun 29, 2005
50   * @author Sameer Charles $Id: PrincipalCollectionImpl.java 32667 2010-03-13 00:37:06Z gjoseph $
51   */
52  public class PrincipalCollectionImpl implements PrincipalCollection {
53  
54      /**
55       * Stable serialVersionUID.
56       */
57      private static final long serialVersionUID = 222L;
58  
59      private static final String NAME = "PrincipalCollection";
60  
61      /**
62       * collection on principal objects
63       */
64      private Collection collection = new ArrayList();
65  
66      private String name;
67  
68      /**
69       * Get name given to this principal
70       * @return name
71       */
72      public String getName() {
73          if (StringUtils.isEmpty(this.name)) {
74              return NAME;
75          }
76          return this.name;
77      }
78  
79      /**
80       * Set this principal name
81       */
82      public void setName(String name) {
83          this.name = name;
84      }
85  
86      /**
87       * Set collection
88       * @param collection
89       */
90      public void set(Collection collection) {
91          this.collection = collection;
92      }
93  
94      /**
95       * Add to collection
96       * @param principal to be added to the collection
97       */
98      public void add(Principal principal) {
99          this.collection.add(principal);
100     }
101 
102     /**
103      * Remove from the collection
104      * @param principal to be removed from the collection
105      */
106     public void remove(Principal principal) {
107         this.collection.remove(principal);
108     }
109 
110     /**
111      * Clear collection
112      */
113     public void clearAll() {
114         this.collection.clear();
115     }
116 
117     /**
118      * Check if this collection contains specified object
119      * @param principal
120      * @return true if the specified object exist in the collection
121      */
122     public boolean contains(Principal principal) {
123         return this.collection.contains(principal);
124     }
125 
126     /**
127      * Checks if this collection contains object with the specified name
128      * @param name
129      * @return true if the collection contains the principal by the specified name
130      */
131     public boolean contains(String name) {
132         return this.get(name) != null;
133     }
134 
135     /**
136      * Get principal associated to the specified name from the collection
137      * @param name
138      * @return principal object associated to the specified name
139      */
140     public Principal get(String name) {
141         Iterator principalIterator = this.collection.iterator();
142         while (principalIterator.hasNext()) {
143             Principal principal = (Principal) principalIterator.next();
144             if (StringUtils.equalsIgnoreCase(name, principal.getName())) {
145                 return principal;
146             }
147         }
148         return null;
149     }
150 
151     /**
152      * Returns an iterator on principals
153      * @return iterator for Principal objects
154      */
155     public Iterator iterator() {
156         return collection.iterator();
157     }
158     
159     /**
160      * @see java.lang.Object#toString()
161      */
162     public String toString() {
163         return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("name", this.name).toString();
164     }
165 }