1   /* Copyright 2004 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  
16  package org.acegisecurity.vote;
17  
18  import org.acegisecurity.Authentication;
19  import org.acegisecurity.ConfigAttribute;
20  import org.acegisecurity.ConfigAttributeDefinition;
21  
22  import java.util.Iterator;
23  
24  
25  /***
26   * Implementation of an {@link AccessDecisionVoter} for unit testing.
27   * 
28   * <p>
29   * If the {@link ConfigAttribute#getAttribute()} has a value of
30   * <code>DENY_AGAIN_FOR_SURE</code>, the voter will vote to deny access.
31   * </p>
32   * 
33   * <p>
34   * All comparisons are case sensitive.
35   * </p>
36   *
37   * @author Ben Alex
38   * @version $Id: DenyAgainVoter.java,v 1.3 2005/11/17 00:55:48 benalex Exp $
39   */
40  public class DenyAgainVoter implements AccessDecisionVoter {
41      //~ Methods ================================================================
42  
43      public boolean supports(ConfigAttribute attribute) {
44          if ("DENY_AGAIN_FOR_SURE".equals(attribute.getAttribute())) {
45              return true;
46          } else {
47              return false;
48          }
49      }
50  
51      public boolean supports(Class clazz) {
52          return true;
53      }
54  
55      public int vote(Authentication authentication, Object object,
56          ConfigAttributeDefinition config) {
57          Iterator iter = config.getConfigAttributes();
58  
59          while (iter.hasNext()) {
60              ConfigAttribute attribute = (ConfigAttribute) iter.next();
61  
62              if (this.supports(attribute)) {
63                  return ACCESS_DENIED;
64              }
65          }
66  
67          return ACCESS_ABSTAIN;
68      }
69  }