# Class HttpPrincipal

java.lang.Object
com.sun.net.httpserver.HttpPrincipal

All Implemented Interfaces:
  `Principal`

public class HttpPrincipal extends Object implements Principal
Represents a user authenticated by HTTP Basic or Digest authentication.

Since:
  1.6

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `HttpPrincipal(String username, String realm)`
  Creates a `HttpPrincipal` from the given `username` and `realm`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object another)`
  Compare two instances of `HttpPrincipal`.
  `String`
  `getName()`
  Returns the contents of this principal in the form realm:username.
  `String`
  `getRealm()`
  Returns the `realm` this object was created with.
  `String`
  `getUsername()`
  Returns the `username` this object was created with.
  `int`
  `hashCode()`
  Returns a hashcode for this `HttpPrincipal`.
  `String`
  `toString()`
  Returns the same string as `getName()`.

  ### Methods declared in class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

  ### Methods declared in interface Principal

  `implies`
  Modifier and Type
  Method
  Description
  `default boolean`
  `implies(Subject subject)`
  Returns `true` if the specified subject is implied by this `Principal`.

- ## Constructor Details

  - ### HttpPrincipal

    public HttpPrincipal(String username, String realm)
    Creates a `HttpPrincipal` from the given `username` and `realm`.
    Parameters:
      `username` - the name of the user within the realm
      `realm` - the realm for this user
    Throws:
      `NullPointerException` - if either username or realm are `null`

- ## Method Details

  - ### equals

    public boolean equals(Object another)
    Compare two instances of `HttpPrincipal`. Returns `true` if another is an instance of `HttpPrincipal`, and its username and realm are equal to this object's username and realm. Returns `false` otherwise.
    Specified by:
      `equals` in interface `Principal`
    Overrides:
      `equals` in class `Object`
    Parameters:
      `another` - the object to compare this instance of `HttpPrincipal` against
    Returns:
      `true` or `false` depending on whether objects are equal or not
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### getName

    public String getName()
    Returns the contents of this principal in the form realm:username.
    Specified by:
      `getName` in interface `Principal`
    Returns:
      the contents of this principal in the form realm:username

  - ### getUsername

    public String getUsername()
    Returns the `username` this object was created with.
    Returns:
      the name of the user associated with this object

  - ### getRealm

    public String getRealm()
    Returns the `realm` this object was created with.
    Returns:
      the realm associated with this object

  - ### hashCode

    public int hashCode()
    Returns a hashcode for this `HttpPrincipal`. This is calculated as `(getUsername()+getRealm()).hashCode()`.
    Specified by:
      `hashCode` in interface `Principal`
    Overrides:
      `hashCode` in class `Object`
    Returns:
      the hashcode for this object
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(Object)`

  - ### toString

    public String toString()
    Returns the same string as `getName()`.
    Specified by:
      `toString` in interface `Principal`
    Overrides:
      `toString` in class `Object`
    Returns:
      the name associated with this object