View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.shiro.authz;
20  
21  import java.util.Collection;
22  import java.util.HashSet;
23  import java.util.Set;
24  
25  /**
26   * Simple POJO implementation of the {@link AuthorizationInfo} interface that stores roles and permissions as internal
27   * attributes.
28   *
29   * @see org.apache.shiro.realm.AuthorizingRealm
30   * @since 0.9
31   */
32  public class SimpleAuthorizationInfo implements AuthorizationInfo {
33  
34      /**
35       * The internal roles collection.
36       */
37      protected Set<String> roles;
38  
39      /**
40       * Collection of all string-based permissions associated with the account.
41       */
42      protected Set<String> stringPermissions;
43  
44      /**
45       * Collection of all object-based permissions associated with the account.
46       */
47      protected Set<Permission> objectPermissions;
48  
49      /**
50       * Default no-argument constructor.
51       */
52      public SimpleAuthorizationInfo() {
53      }
54  
55      /**
56       * Creates a new instance with the specified roles and no permissions.
57       *
58       * @param roles the roles assigned to the realm account.
59       */
60      public SimpleAuthorizationInfo(Set<String> roles) {
61          this.roles = roles;
62      }
63  
64      public Set<String> getRoles() {
65          return roles;
66      }
67  
68      /**
69       * Sets the roles assigned to the account.
70       *
71       * @param roles the roles assigned to the account.
72       */
73      public void setRoles(Set<String> roles) {
74          this.roles = roles;
75      }
76  
77      /**
78       * Adds (assigns) a role to those associated with the account.  If the account doesn't yet have any roles, a
79       * new roles collection (a Set) will be created automatically.
80       *
81       * @param role the role to add to those associated with the account.
82       */
83      public void addRole(String role) {
84          if (this.roles == null) {
85              this.roles = new HashSet<String>();
86          }
87          this.roles.add(role);
88      }
89  
90      /**
91       * Adds (assigns) multiple roles to those associated with the account.  If the account doesn't yet have any roles, a
92       * new roles collection (a Set) will be created automatically.
93       *
94       * @param roles the roles to add to those associated with the account.
95       */
96      public void addRoles(Collection<String> roles) {
97          if (this.roles == null) {
98              this.roles = new HashSet<String>();
99          }
100         this.roles.addAll(roles);
101     }
102 
103     public Set<String> getStringPermissions() {
104         return stringPermissions;
105     }
106 
107     /**
108      * Sets the string-based permissions assigned directly to the account.  The permissions set here, in addition to any
109      * {@link #getObjectPermissions() object permissions} constitute the total permissions assigned directly to the
110      * account.
111      *
112      * @param stringPermissions the string-based permissions assigned directly to the account.
113      */
114     public void setStringPermissions(Set<String> stringPermissions) {
115         this.stringPermissions = stringPermissions;
116     }
117 
118     /**
119      * Adds (assigns) a permission to those directly associated with the account.  If the account doesn't yet have any
120      * direct permissions, a new permission collection (a Set&lt;String&gt;) will be created automatically.
121      *
122      * @param permission the permission to add to those directly assigned to the account.
123      */
124     public void addStringPermission(String permission) {
125         if (this.stringPermissions == null) {
126             this.stringPermissions = new HashSet<String>();
127         }
128         this.stringPermissions.add(permission);
129     }
130 
131     /**
132      * Adds (assigns) multiple permissions to those associated directly with the account.  If the account doesn't yet
133      * have any string-based permissions, a  new permissions collection (a Set&lt;String&gt;) will be created automatically.
134      *
135      * @param permissions the permissions to add to those associated directly with the account.
136      */
137     public void addStringPermissions(Collection<String> permissions) {
138         if (this.stringPermissions == null) {
139             this.stringPermissions = new HashSet<String>();
140         }
141         this.stringPermissions.addAll(permissions);
142     }
143 
144     public Set<Permission> getObjectPermissions() {
145         return objectPermissions;
146     }
147 
148     /**
149      * Sets the object-based permissions assigned directly to the account.  The permissions set here, in addition to any
150      * {@link #getStringPermissions() string permissions} constitute the total permissions assigned directly to the
151      * account.
152      *
153      * @param objectPermissions the object-based permissions assigned directly to the account.
154      */
155     public void setObjectPermissions(Set<Permission> objectPermissions) {
156         this.objectPermissions = objectPermissions;
157     }
158 
159     /**
160      * Adds (assigns) a permission to those directly associated with the account.  If the account doesn't yet have any
161      * direct permissions, a new permission collection (a Set&lt;{@link Permission Permission}&gt;) will be created automatically.
162      *
163      * @param permission the permission to add to those directly assigned to the account.
164      */
165     public void addObjectPermission(Permission permission) {
166         if (this.objectPermissions == null) {
167             this.objectPermissions = new HashSet<Permission>();
168         }
169         this.objectPermissions.add(permission);
170     }
171 
172     /**
173      * Adds (assigns) multiple permissions to those associated directly with the account.  If the account doesn't yet
174      * have any object-based permissions, a  new permissions collection (a Set&lt;{@link Permission Permission}&gt;)
175      * will be created automatically.
176      *
177      * @param permissions the permissions to add to those associated directly with the account.
178      */
179     public void addObjectPermissions(Collection<Permission> permissions) {
180         if (this.objectPermissions == null) {
181             this.objectPermissions = new HashSet<Permission>();
182         }
183         this.objectPermissions.addAll(permissions);
184     }
185 }