john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

UserSession

//2012-02-19  johnpfeiffer (dynamic web project)
import java.util.Date;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

class UserSession
{
    private static final String CLASSVERSION = "0.3";
    private HttpSession session = null;
    private String sessionToken = null;

    UserSession( HttpServletRequest request )
    {
        if( request == null )
        {       throw new IllegalArgumentException( "httpservletrequest is null" );
        }else
        {       session = request.getSession();
                setExpirationMinutes( 1 );
                sessionToken = UUID.randomUUID().toString();
        }
    }

    UserSession( HttpServletRequest request , int minutes )
    {
        if( request == null )
        {       throw new IllegalArgumentException( "httpservletrequest is null" );
        }else
        {
            if( minutes < 1 )
            {       throw new IllegalArgumentException( "minutes cannot be less than 1" );
            }else
            {
                session = request.getSession();
                setExpirationMinutes( minutes );
                sessionToken = UUID.randomUUID().toString();
            }
        }
    }

  private void setExpirationMinutes( int minutes )
    {
      if( session != null )
        {
        if( minutes >= 1 )
        {       session.setMaxInactiveInterval( minutes * 60 );
        }else
            {       throw new IllegalArgumentException( "ERROR: minutes cannot be less than 1" );
        }
        }else
        {       throw new NullPointerException( "cannot set minutes, session is null" );
        }
    }

    protected String getVersion()
    {       return CLASSVERSION;
    }

    protected String getSessionInfo()
    {
        StringBuilder strb = new StringBuilder();
        strb.append( "sessionIsNew , createdTimestamp , sessionId , lastAccessTimestamp , maxInactive , sessionToken" );
        strb.append( System.getProperty( "line.separator" ) );

        strb.append( session.isNew() + " , " +  new Date( session.getCreationTime()) + " , " + session.getId() +
                                    " , " + new Date( session.getLastAccessedTime()) + " , " + session.getMaxInactiveInterval() + " , " + session.getAttribute( "sessionToken")  );

        strb.append( System.getProperty( "line.separator" ) );
        return strb.toString();
    }

    protected boolean isValid( )
    {
        boolean result = false;
        if( session != null && sessionToken != null && !sessionToken.isEmpty() )
        {
            Object retrievedSessionTokenObject = session.getAttribute( "sessionToken" );
            if( retrievedSessionTokenObject != null )
            {
                String retrievedSessionToken = retrievedSessionTokenObject.toString();
                if( !retrievedSessionToken.isEmpty() && retrievedSessionToken.equals( sessionToken ) )
                {           result = true;
                }
            }
        }
        return result;
    }

    protected long getInactiveExpiration()
    {       return ( session.getMaxInactiveInterval() );
    }
    protected long getLastAccess()
    {       return (session.getLastAccessedTime() );
    }

    protected boolean isExpired()
    {
        boolean result = false;
        long lastaccesstimemilliseconds = session.getLastAccessedTime();
        long currenttimemilliseconds = System.currentTimeMillis();
        long maxinactiveseconds = session.getMaxInactiveInterval();

        if( currenttimemilliseconds - lastaccesstimemilliseconds  > maxinactiveseconds * 1000)
        {       result = true;
        }
        return result;
    }

    protected boolean setValid()
    {
        boolean result = false;
        if( session != null )
        {       session.setAttribute( "sessionToken" , sessionToken );
                result = true;
        }
        return result;
    }

    protected boolean setInvalid()
    {
        boolean result = false;
        try{
            if( session != null )
            {       session.setAttribute( "sessionToken" , "" );
//              session.invalidate();               // not sure why
                    result = true;
            }
        }catch( Exception e )
        {       e.printStackTrace();
        }
        return result;
    }

} // end UserSession class

  • « SQLTable
  • UserSessionTest INCOMPLETE »

Published

Apr 19, 2012

Category

java-classes

~266 words

Tags

  • classes 92
  • java 252
  • usersession 1