Flesh out some session management interfaces
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / idp / session / impl / ServiceInformationImpl.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 edu.internet2.middleware.shibboleth.idp.session.AuthenticationMethodInformation;
20 import edu.internet2.middleware.shibboleth.idp.session.ServiceInformation;
21
22 import org.joda.time.DateTime;
23 import org.opensaml.saml2.core.NameID;
24
25 /**
26  * Information about a service a user has logged in to.
27  */
28 public class ServiceInformationImpl implements ServiceInformation {
29
30     /** Entity ID of the service. */
31     private String entityID;
32
33     /** Instant the user was authenticated to the service. */
34     private DateTime authenticationInstant;
35
36     /** Authentication method used to authenticate the user to the service. */
37     private AuthenticationMethodInformation methodInfo;
38
39     /** Name ID provided to the service. */
40     private NameID nameId;
41
42     /**
43      * Default constructor.
44      * 
45      * @param entityID The unique identifier for the service.
46      * @param authenticationInstant The time the user authenticated to the service.
47      * @param methodInfo The authentication method used to log into the service.
48      * @param nameId The {@link NameID} used for the subject/user with this service.
49      * 
50      */
51     public ServiceInformationImpl(String entityID, DateTime authenticationInstant, AuthenticationMethodInformation methodInfo,
52             NameID nameId) {
53
54         this.entityID = entityID;
55         this.authenticationInstant = authenticationInstant;
56         this.methodInfo = methodInfo;
57         this.nameId = nameId;
58     }
59
60     /**
61      * Cloning constructor.
62      * 
63      * @param serviceInfo The ServiceInformation instance to duplicate.
64      */
65     public ServiceInformationImpl(final ServiceInformation serviceInfo) {
66
67         if (serviceInfo == null) {
68             return;
69         }
70
71         this.entityID = serviceInfo.getEntityID();
72         this.authenticationInstant = serviceInfo.getAuthenticationInstant();
73         this.methodInfo = serviceInfo.getAuthenticationMethod();
74         this.nameId = serviceInfo.getSubjectNameID();
75     }
76
77     /** {@inheritDoc} */
78     public String getEntityID() {
79         return entityID;
80     }
81
82     /** {@inheritDoc} */
83     public DateTime getAuthenticationInstant() {
84         return authenticationInstant;
85     }
86
87     /** {@inheritDoc} */
88     public AuthenticationMethodInformation getAuthenticationMethod() {
89         return methodInfo;
90     }
91
92     /** {@inheritDoc} */
93     public NameID getSubjectNameID() {
94         return nameId;
95     }
96
97     /** {@inheritDoc} */
98     public boolean equals(Object obj) {
99         if (!(obj instanceof ServiceInformation)) {
100             return false;
101         }
102
103         ServiceInformation si = (ServiceInformation) obj;
104         if (this.getEntityID().equals(si.getEntityID())
105                 && this.getAuthenticationInstant().equals(si.getAuthenticationInstant())
106                 && this.getSubjectNameID().equals(si.getSubjectNameID())) {
107
108             return true;
109         }
110         
111         return false;
112     }
113 }