View Javadoc

1   /* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
2    *
3    * Licensed under the Apache License, Version 2.0 (the "License");
4    * you may not use this file except in compliance with the License.
5    * You may obtain a copy of the License at
6    *
7    *     http://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.acegisecurity.acls.domain;
16  
17  import org.acegisecurity.acls.AccessControlEntry;
18  import org.acegisecurity.acls.Acl;
19  import org.acegisecurity.acls.AuditableAccessControlEntry;
20  import org.acegisecurity.acls.Permission;
21  import org.acegisecurity.acls.sid.Sid;
22  
23  import org.springframework.util.Assert;
24  
25  import java.io.Serializable;
26  
27  
28  /**
29   * An immutable default implementation of <code>AccessControlEntry</code>.
30   *
31   * @author Ben Alex
32   * @version $Id: AccessControlEntryImpl.java 1754 2006-11-17 02:01:21Z benalex $
33   */
34  public class AccessControlEntryImpl implements AccessControlEntry, AuditableAccessControlEntry {
35      //~ Instance fields ================================================================================================
36  
37      private Acl acl;
38      private Permission permission;
39      private Serializable id;
40      private Sid sid;
41      private boolean auditFailure = false;
42      private boolean auditSuccess = false;
43      private boolean granting;
44  
45      //~ Constructors ===================================================================================================
46  
47      public AccessControlEntryImpl(Serializable id, Acl acl, Sid sid, Permission permission, boolean granting,
48          boolean auditSuccess, boolean auditFailure) {
49          Assert.notNull(acl, "Acl required");
50          Assert.notNull(sid, "Sid required");
51          Assert.notNull(permission, "Permission required");
52          this.id = id;
53          this.acl = acl; // can be null
54          this.sid = sid;
55          this.permission = permission;
56          this.granting = granting;
57          this.auditSuccess = auditSuccess;
58          this.auditFailure = auditFailure;
59      }
60  
61      //~ Methods ========================================================================================================
62  
63      public boolean equals(Object arg0) {
64          if (!(arg0 instanceof AccessControlEntryImpl)) {
65              return false;
66          }
67  
68          AccessControlEntryImpl rhs = (AccessControlEntryImpl) arg0;
69  
70          if ((this.auditFailure != rhs.isAuditFailure()) || (this.auditSuccess != rhs.isAuditSuccess())
71              || (this.granting != rhs.isGranting()) || !this.acl.equals(rhs.getAcl()) || !this.id.equals(rhs.getId())
72              || !this.permission.equals(rhs.getPermission()) || !this.sid.equals(rhs.getSid())) {
73              return false;
74          }
75  
76          return true;
77      }
78  
79      public Acl getAcl() {
80          return acl;
81      }
82  
83      public Serializable getId() {
84          return id;
85      }
86  
87      public Permission getPermission() {
88          return permission;
89      }
90  
91      public Sid getSid() {
92          return sid;
93      }
94  
95      public boolean isAuditFailure() {
96          return auditFailure;
97      }
98  
99      public boolean isAuditSuccess() {
100         return auditSuccess;
101     }
102 
103     public boolean isGranting() {
104         return granting;
105     }
106 
107     void setAuditFailure(boolean auditFailure) {
108         this.auditFailure = auditFailure;
109     }
110 
111     void setAuditSuccess(boolean auditSuccess) {
112         this.auditSuccess = auditSuccess;
113     }
114 
115     void setPermission(Permission permission) {
116         Assert.notNull(permission, "Permission required");
117         this.permission = permission;
118     }
119 
120     public String toString() {
121         StringBuffer sb = new StringBuffer();
122         sb.append("AccessControlEntryImpl[");
123         sb.append("id: ").append(this.id).append("; ");
124         sb.append("granting: ").append(this.granting).append("; ");
125         sb.append("sid: ").append(this.sid).append("; ");
126         sb.append("permission: ").append(this.permission).append("; ");
127         sb.append("auditSuccess: ").append(this.auditSuccess).append("; ");
128         sb.append("auditFailure: ").append(this.auditFailure);
129         sb.append("]");
130 
131         return sb.toString();
132     }
133 }