001: /*
002: * JOSSO: Java Open Single Sign-On
003: *
004: * Copyright 2004-2008, Atricore, Inc.
005: *
006: * This is free software; you can redistribute it and/or modify it
007: * under the terms of the GNU Lesser General Public License as
008: * published by the Free Software Foundation; either version 2.1 of
009: * the License, or (at your option) any later version.
010: *
011: * This software is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this software; if not, write to the Free
018: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
019: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
020: */
021:
022: package org.josso.gateway.assertion;
023:
024: import org.josso.gateway.session.SSOSession;
025:
026: /**
027: * TODO: Comment Me!
028: *
029: * @author <a href="mailto:gbrigand@josso.org">Gianluca Brigandi</a>
030: * @version $Id$
031: */
032: public class AuthenticationAssertionImpl implements
033: AuthenticationAssertion {
034: private static final int ASSERTION_MAX_AGE = 30;
035:
036: private String id;
037: private boolean isValid = true;
038: private long creationTime;
039: private SSOSession ssoSession;
040:
041: AuthenticationAssertionImpl(String id) {
042: this .id = id;
043: }
044:
045: AuthenticationAssertionImpl(String id, SSOSession ssoSession) {
046: this .id = id;
047: this .ssoSession = ssoSession;
048: creationTime = System.currentTimeMillis();
049: }
050:
051: public String getId() {
052: return id;
053: }
054:
055: public SSOSession getSSOSession() {
056: return ssoSession;
057: }
058:
059: public boolean isValid() {
060:
061: if (!isValid) {
062: return isValid;
063: }
064:
065: long timeNow = System.currentTimeMillis();
066: int age = (int) ((timeNow - creationTime) / 1000L);
067:
068: if (age > ASSERTION_MAX_AGE) {
069: expire();
070: }
071:
072: return isValid;
073:
074: }
075:
076: public long getCreationTime() {
077: return creationTime;
078: }
079:
080: /**
081: * This method expires an assertion.
082: */
083: public void expire() {
084:
085: isValid = false;
086:
087: // TBD: Notify interested session event listeners
088: //fireAssertionEvent(AuthenticationAssertion.AUTHENTICATION_ASSERTION_DESTROYED_EVENT, null);
089: }
090:
091: public void fireAssertionEvent(String type, Object data) {
092: throw new java.lang.UnsupportedOperationException(
093: "Event handling for assertions not yet implemented");
094: }
095:
096: public int hashCode() {
097: return getId().hashCode();
098: }
099:
100: public boolean equals(Object obj) {
101: if (!(obj instanceof AuthenticationAssertion))
102: return false;
103:
104: AuthenticationAssertion aa = (AuthenticationAssertion) obj;
105:
106: return aa.getId().equals(getId());
107: }
108:
109: }
|