clean up/optimize equals() and hashCode() methods
[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 javax.security.auth.Subject;
20
21 import org.joda.time.DateTime;
22
23 import edu.internet2.middleware.shibboleth.idp.session.AuthenticationMethodInformation;
24
25 /**
26  * Information about an authentication method employed by a user.
27  */
28 public class AuthenticationMethodInformationImpl implements AuthenticationMethodInformation {
29
30     /** Subject created by this authentication mechanism. */
31     private Subject authenticationSubject;
32     
33     /** The authentication method (a URI). */
34     private String authenticationMethod;
35
36     /** The timestamp at which authentication occurred. */
37     private DateTime authenticationInstant;
38
39     /** The lifetime of the authentication method. */
40     private long authenticationDuration;
41
42     /** Time when this method expires. */
43     private DateTime expirationInstant;
44
45     /**
46      * Default constructor.
47      * 
48      * @param method The unique identifier for the authentication method.
49      * @param instant The time the user authenticated with this member.
50      * @param duration The duration of this authentication method.
51      */
52     public AuthenticationMethodInformationImpl(String method, DateTime instant, long duration) {
53
54         if (method == null || instant == null || duration < 0) {
55             throw new IllegalArgumentException("Authentication method, instant, and duration may not be null");
56         }
57
58         authenticationMethod = method;
59         authenticationInstant = instant;
60         authenticationDuration = duration;
61         expirationInstant = instant.plus(duration);
62     }
63     
64     /**
65      * Default constructor.
66      * 
67      * @param subject Subject created by the authentication method
68      * @param method The unique identifier for the authentication method.
69      * @param instant The time the user authenticated with this member.
70      * @param duration The duration of this authentication method.
71      */
72     public AuthenticationMethodInformationImpl(Subject subject, String method, DateTime instant, long duration) {
73
74         if (method == null || instant == null || duration < 0) {
75             throw new IllegalArgumentException("Authentication method, instant, and duration may not be null");
76         }
77
78         authenticationSubject = subject;
79         authenticationMethod = method;
80         authenticationInstant = instant;
81         authenticationDuration = duration;
82         expirationInstant = instant.plus(duration);
83     }
84     
85     /** {@inheritDoc} */
86     public Subject getAuthenticationSubject() {
87         return authenticationSubject;
88     }
89
90     /** {@inheritDoc} */
91     public String getAuthenticationMethod() {
92         return authenticationMethod;
93     }
94
95     /** {@inheritDoc} */
96     public DateTime getAuthenticationInstant() {
97         return authenticationInstant;
98     }
99
100     /** {@inheritDoc} */
101     public long getAuthenticationDuration() {
102         return authenticationDuration;
103     }
104
105     /** {@inheritDoc} */
106     public boolean isExpired() {
107         return expirationInstant.isBeforeNow();
108     }
109     
110     /** {@inheritDoc} */
111     public int hashCode() {
112         return authenticationMethod.hashCode();
113     }
114
115     /** {@inheritDoc} */
116     public boolean equals(Object obj) {
117         if(obj == this){
118             return true;
119         }
120         
121         if (!(obj instanceof AuthenticationMethodInformation)) {
122             return false;
123         }
124
125         AuthenticationMethodInformation amInfo = (AuthenticationMethodInformation) obj;
126         return authenticationMethod.equals(amInfo.getAuthenticationMethod());
127     }
128 }