    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;
    17
    18  import java.util.Iterator;
    19
    20
    21  /***
    22   * Grants access if the user holds any of the authorities listed in the
    23   * configuration attributes starting with "MOCK_".
    24   *
    25   * @author Ben Alex
    26   * @version $Id: MockAccessDecisionManager.java,v 1.3 2005/11/17 00:55:47 benalex Exp $
    27   */
    28  public class MockAccessDecisionManager implements AccessDecisionManager {
    29      //~ Methods ================================================================
    30
    31      public void decide(Authentication authentication, Object object,
    32          ConfigAttributeDefinition config) throws AccessDeniedException {
    33          Iterator iter = config.getConfigAttributes();
    34
    35          while (iter.hasNext()) {
    36              ConfigAttribute attr = (ConfigAttribute) iter.next();
    37
    38              if (this.supports(attr)) {
    39                  for (int i = 0; i < authentication.getAuthorities().length;
    40                      i++) {
    41                      if (attr.getAttribute().equals(authentication
    42                              .getAuthorities()[i].getAuthority())) {
    43                          return;
    44                      }
    45                  }
    46              }
    47          }
    48
    49          throw new AccessDeniedException("Didn't hold required authority");
    50      }
    51
    52      public boolean supports(ConfigAttribute attribute) {
    53          if (attribute.getAttribute().startsWith("MOCK_")) {
    54              return true;
    55          } else {
    56              return false;
    57          }
    58      }
    59
    60      public boolean supports(Class clazz) {
    61          return true;
    62      }
    63  }