View Javadoc

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  /***
19   * An abstract implementation of the {@link AuthenticationManager}.
20   *
21   * @author Wesley Hall
22   * @version $Id: AbstractAuthenticationManager.java,v 1.2 2005/11/17 00:55:49 benalex Exp $
23   */
24  public abstract class AbstractAuthenticationManager
25      implements AuthenticationManager {
26      //~ Methods ================================================================
27  
28      /***
29       * <p>
30       * An implementation of the <code>authenticate</code> method that calls the
31       * abstract method <code>doAuthenticatation</code> to do its work.
32       * </p>
33       * 
34       * <p>
35       * If doAuthenticate throws an <code>AuthenticationException</code> then
36       * the exception is populated with the failed <code>Authentication</code>
37       * object that failed.
38       * </p>
39       *
40       * @param authentication the authentication request object
41       *
42       * @return a fully authenticated object including credentials
43       *
44       * @throws AuthenticationException if authentication fails
45       */
46      public final Authentication authenticate(Authentication authentication)
47          throws AuthenticationException {
48          try {
49              return doAuthentication(authentication);
50          } catch (AuthenticationException e) {
51              e.setAuthentication(authentication);
52              throw e;
53          }
54      }
55  
56      /***
57       * <p>
58       * Concrete implementations of this class override this method to provide
59       * the authentication service.
60       * </p>
61       * 
62       * <p>
63       * The contract for this method is documented in the {@link
64       * AuthenticationManager#authenticate(org.acegisecurity.Authentication)}.
65       * </p>
66       *
67       * @param authentication the authentication request object
68       *
69       * @return a fully authenticated object including credentials
70       *
71       * @throws AuthenticationException if authentication fails
72       */
73      protected abstract Authentication doAuthentication(
74          Authentication authentication) throws AuthenticationException;
75  }