    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_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: DenyVoter.java,v 1.3 2005/11/17 00:55:48 benalex Exp $
    39   */
    40  public class DenyVoter implements AccessDecisionVoter {
    41      //~ Methods ================================================================
    42
    43      public boolean supports(ConfigAttribute attribute) {
    44          if ("DENY_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  }