017eddabf934c7b06140c821e1ad970372d4caf5
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / idp / session / impl / AuthenticationMethodInformationImpl.java
1 /*
2  * Copyright [2006] [University Corporation for Advanced Internet Development, Inc.]
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package edu.internet2.middleware.shibboleth.idp.session.impl;
18
19 import org.joda.time.DateTime;
20
21 import edu.internet2.middleware.shibboleth.idp.session.AuthenticationMethodInformation;
22
23 /**
24  * Information about an authentication method employed by a user.
25  */
26 public class AuthenticationMethodInformationImpl implements AuthenticationMethodInformation {
27
28     /** The authentication method (a URI). */
29     private String authenticationMethod;
30
31     /** The timestamp at which authentication occurred. */
32     private DateTime authenticationInstant;
33
34     /** The lifetime of the authentication method. */
35     private long authenticationDuration;
36
37     /** Time when this method expires. */
38     private DateTime expirationInstant;
39
40     /**
41      * Default constructor.
42      * 
43      * @param method The unique identifier for the authentication method.
44      * @param instant The time the user authenticated with this member.
45      * @param duration The duration of this authentication method.
46      */
47     public AuthenticationMethodInformationImpl(String method, DateTime instant, long duration) {
48
49         if (method == null || instant == null || duration < 0) {
50             throw new IllegalArgumentException("Authentication method, instant, and duration may not be null");
51         }
52
53         authenticationMethod = method;
54         authenticationInstant = instant;
55         authenticationDuration = duration;
56         expirationInstant = instant.plus(duration);
57     }
58
59     /** {@inheritDoc} */
60     public String getAuthenticationMethod() {
61         return authenticationMethod;
62     }
63
64     /** {@inheritDoc} */
65     public DateTime getAuthenticationInstant() {
66         return authenticationInstant;
67     }
68
69     /** {@inheritDoc} */
70     public long getAuthenticationDuration() {
71         return authenticationDuration;
72     }
73
74     /** {@inheritDoc} */
75     public boolean isExpired() {
76         return expirationInstant.isBeforeNow();
77     }
78     
79     /** {@inheritDoc} */
80     public int hashCode() {
81         return authenticationMethod.hashCode();
82     }
83
84     /** {@inheritDoc} */
85     public boolean equals(Object obj) {
86         if (!(obj instanceof AuthenticationMethodInformation)) {
87             return false;
88         }
89
90         AuthenticationMethodInformation amInfo = (AuthenticationMethodInformation) obj;
91         return authenticationMethod.equals(amInfo.getAuthenticationMethod());
92     }
93 }