try
{
if ( request.getRequest().getUserPrincipal() != null )
{
Subject subject = request.getSubject();
PasswordCredential pwdCredential = SecurityHelper.getPasswordCredential(subject);
Integer passwordDaysValid = null;
// check for an existing password credential
if ( pwdCredential != null )
{
if ( pwdCredential.isUpdateRequired() )
{
passwordDaysValid = new Integer(0); // required change
}
if ( request.getSessionAttribute(CHECKED_KEY) == null )
{
request.setSessionAttribute(CHECKED_KEY,Boolean.TRUE);
if ( pwdCredential.getPreviousAuthenticationDate() != null &&
pwdCredential.getExpirationDate() != null )
{
long expirationTime = pwdCredential.getExpirationDate().getTime();
long lastAuthTime = pwdCredential.getLastAuthenticationDate().getTime();
int lastAuthDaysBeforeExpiration = (int)((expirationTime-lastAuthTime)/(24*60*60*1000));
if ( lastAuthDaysBeforeExpiration < 1 )
{
passwordDaysValid = new Integer(1);
}
else if (expirationWarningDays.length > 0)
{
long prevAuthTime = Long.MIN_VALUE;
if (pwdCredential.getPreviousAuthenticationDate() != null )
{
prevAuthTime = pwdCredential.getPreviousAuthenticationDate().getTime();
}
int prevAuthDaysBeforeExpiration = (int)((expirationTime-prevAuthTime)/(24*60*60*1000));
if ( prevAuthDaysBeforeExpiration > lastAuthDaysBeforeExpiration )
{
for ( int i = 0; i < expirationWarningDays.length; i++ )