Class SaslExtensions

java.lang.Object
org.apache.kafka.common.security.auth.SaslExtensions

public class SaslExtensions extends Object
A simple immutable value object class holding customizable SASL extensions.

Note on object identity and equality: SaslExtensions intentionally overrides the standard equals(Object) and hashCode() methods calling their respective Object.equals(Object) and Object.hashCode() implementations. In so doing, it provides equality only via reference identity and will not base equality on the underlying values of its extensions map.

The reason for this approach to equality is based off of the manner in which credentials are stored in a Subject. SaslExtensions are added to and removed from a Subject via its public credentials. The public credentials are stored in a Set in the Subject, so object equality therefore becomes a concern. With shallow, reference-based equality, distinct SaslExtensions instances with the same map values can be considered unique. This is critical to operations like token refresh. See KAFKA-14062 for more detail.

  • Constructor Details

  • Method Details

    • map

      public Map<String,String> map()
      Returns an immutable map of the extension names and their values
    • empty

      public static SaslExtensions empty()
      Creates an "empty" instance indicating no SASL extensions. Do not cache the result of this method call for use by multiple Subjects as the references need to be unique.

      See the class-level documentation for details.

      Returns:
      Unique, but empty, SaslExtensions instance
    • equals

      public final boolean equals(Object o)
      Implements equals using the reference comparison implementation from Object.equals(Object).

      See the class-level documentation for details.

      Overrides:
      equals in class Object
      Parameters:
      o - Other object to compare
      Returns:
      True if o == this
    • hashCode

      public final int hashCode()
      Implements hashCode using the native implementation from Object.hashCode().

      See the class-level documentation for details.

      Overrides:
      hashCode in class Object
      Returns:
      Hash code of instance
    • toString

      public String toString()
      Overrides:
      toString in class Object