001         package com.croftsoft.core.security;
002    
003         import java.io.Serializable;
004    
005         import com.croftsoft.core.lang.NullArgumentException;
006         import com.croftsoft.core.lang.ObjectLib;
007    
008         /*********************************************************************
009         * Stores a username/password pair.
010         *
011         * @version
012         *   2003-06-17
013         * @since
014         *   2001-04-12
015         * @author
016         *   <a href="https://www.croftsoft.com/">David W. Croft</a>
017         *********************************************************************/
018    
019         public final class  Authentication
020           implements Cloneable, Serializable
021         //////////////////////////////////////////////////////////////////////
022         //////////////////////////////////////////////////////////////////////
023         {
024    
025         private static final long  serialVersionUID = 0L;
026    
027         //
028    
029         private final String  username;
030    
031         private final String  password;
032    
033         //////////////////////////////////////////////////////////////////////
034         //////////////////////////////////////////////////////////////////////
035    
036         /*********************************************************************
037         * Main constructor.
038         *
039         * @throws NullArgumentException
040         *   If username is null.
041         *********************************************************************/
042         public  Authentication (
043           String  username,
044           String  password )
045         //////////////////////////////////////////////////////////////////////
046         {
047           NullArgumentException.check ( this.username = username );
048    
049           this.password = password;
050         }
051    
052         //////////////////////////////////////////////////////////////////////
053         //////////////////////////////////////////////////////////////////////
054    
055         public String  getUsername ( ) { return username; }
056    
057         public String  getPassword ( ) { return password; }
058    
059         //////////////////////////////////////////////////////////////////////
060         //////////////////////////////////////////////////////////////////////
061    
062         public Object  clone ( )
063         //////////////////////////////////////////////////////////////////////
064         {
065           try
066           {
067             return super.clone ( );
068           }
069           catch ( CloneNotSupportedException  ex )
070           {
071             // This will never happen.
072    
073             throw new RuntimeException ( );
074           }          
075         }
076    
077         public boolean  equals ( Object  other )
078         //////////////////////////////////////////////////////////////////////
079         {
080           if ( other == null )
081           {
082             return false;
083           }
084    
085           if ( !getClass ( ).equals ( other.getClass ( ) ) )
086           {
087             return false;
088           }
089    
090           Authentication  that = ( Authentication ) other;
091    
092           return this.username.equals ( that.username )
093             && ObjectLib.equivalent ( this.password, that.password );
094         }
095    
096         public int  hashCode ( )
097         //////////////////////////////////////////////////////////////////////
098         {
099           return username.hashCode ( );
100         }
101    
102         //////////////////////////////////////////////////////////////////////
103         //////////////////////////////////////////////////////////////////////
104         }