Java tutorial
/* * Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license * distributed with this file and available online at * http://www.ja-sig.org/products/cas/overview/license/ */ package org.jasig.cas.ticket.support; import org.jasig.cas.ticket.ExpirationPolicy; import org.jasig.cas.ticket.TicketState; import org.springframework.util.Assert; /** * ExpirationPolicy that is based on certain number of uses of a ticket or a * certain time period for a ticket to exist. * * @author Scott Battaglia * @version $Revision$ $Date$ * @since 3.0 */ public final class MultiTimeUseOrTimeoutExpirationPolicy implements ExpirationPolicy { /** Serializable Unique ID. */ private static final long serialVersionUID = 3257844372614558261L; /** The time to kill in millseconds. */ private final long timeToKillInMilliSeconds; /** The maximum number of uses before expiration. */ private final int numberOfUses; public MultiTimeUseOrTimeoutExpirationPolicy(final int numberOfUses, final long timeToKillInMilliSeconds) { this.timeToKillInMilliSeconds = timeToKillInMilliSeconds; this.numberOfUses = numberOfUses; Assert.isTrue(this.numberOfUses > 0, "numberOfUsers must be greater than 0."); Assert.isTrue(this.timeToKillInMilliSeconds > 0, "timeToKillInMilliseconds must be greater than 0."); } public boolean isExpired(final TicketState ticketState) { return (ticketState == null) || (ticketState.getCountOfUses() >= this.numberOfUses) || (System.currentTimeMillis() - ticketState.getLastTimeUsed() >= this.timeToKillInMilliSeconds); } }