Class HeaderWarning

java.lang.Object
org.elasticsearch.common.logging.HeaderWarning

public class HeaderWarning
extends java.lang.Object
This is a simplistic logger that adds warning messages to HTTP headers. Use HeaderWarning.addWarning(message,params). Message will be formatted according to RFC7234. The result will be returned as HTTP response headers.
  • Field Summary

    Fields
    Modifier and Type Field Description
    static java.util.regex.Pattern WARNING_HEADER_PATTERN
    Regular expression to test if a string matches the RFC7234 specification for warning headers.
    static java.util.regex.Pattern WARNING_XCONTENT_LOCATION_PATTERN  
  • Constructor Summary

    Constructors
    Constructor Description
    HeaderWarning()  
  • Method Summary

    Modifier and Type Method Description
    static void addWarning​(java.lang.String message, java.lang.Object... params)  
    static java.lang.String escapeAndEncode​(java.lang.String s)
    Escape and encode a string as a valid RFC 7230 quoted-string.
    static java.lang.String extractWarningValueFromWarningHeader​(java.lang.String s, boolean stripXContentPosition)
    Extracts the warning value from the value of a warning header that is formatted according to RFC 7234.
    static java.lang.String formatWarning​(java.lang.String s)
    Format a warning string in the proper warning format by prepending a warn code, warn agent, wrapping the warning string in quotes, and appending the RFC 7231 date.
    static java.lang.String getXOpaqueId()  
    static void removeThreadContext​(ThreadContext threadContext)
    Remove the ThreadContext used to add warning headers to network responses.
    static void setThreadContext​(ThreadContext threadContext)
    Set the ThreadContext used to add warning headers to network responses.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • WARNING_HEADER_PATTERN

      public static final java.util.regex.Pattern WARNING_HEADER_PATTERN
      Regular expression to test if a string matches the RFC7234 specification for warning headers. This pattern assumes that the warn code is always 299. Further, this pattern assumes that the warn agent represents a version of Elasticsearch including the build hash.
    • WARNING_XCONTENT_LOCATION_PATTERN

      public static final java.util.regex.Pattern WARNING_XCONTENT_LOCATION_PATTERN
  • Constructor Details

    • HeaderWarning

      public HeaderWarning()
  • Method Details

    • setThreadContext

      public static void setThreadContext​(ThreadContext threadContext)
      Set the ThreadContext used to add warning headers to network responses.

      This is expected to only be invoked by the Node's constructor (therefore once outside of tests).

      Parameters:
      threadContext - The thread context owned by the ThreadPool (and implicitly a Node)
      Throws:
      java.lang.IllegalStateException - if this threadContext has already been set
    • removeThreadContext

      public static void removeThreadContext​(ThreadContext threadContext)
      Remove the ThreadContext used to add warning headers to network responses.

      This is expected to only be invoked by the Node's close method (therefore once outside of tests).

      Parameters:
      threadContext - The thread context owned by the ThreadPool (and implicitly a Node)
      Throws:
      java.lang.IllegalStateException - if this threadContext is unknown (and presumably already unset before)
    • extractWarningValueFromWarningHeader

      public static java.lang.String extractWarningValueFromWarningHeader​(java.lang.String s, boolean stripXContentPosition)
      Extracts the warning value from the value of a warning header that is formatted according to RFC 7234. That is, given a string 299 Elasticsearch-6.0.0 "warning value", the return value of this method would be warning value.
      Parameters:
      s - the value of a warning header formatted according to RFC 7234.
      Returns:
      the extracted warning value
    • formatWarning

      public static java.lang.String formatWarning​(java.lang.String s)
      Format a warning string in the proper warning format by prepending a warn code, warn agent, wrapping the warning string in quotes, and appending the RFC 7231 date.
      Parameters:
      s - the warning string to format
      Returns:
      a warning value formatted according to RFC 7234
    • escapeAndEncode

      public static java.lang.String escapeAndEncode​(java.lang.String s)
      Escape and encode a string as a valid RFC 7230 quoted-string.
      Parameters:
      s - the string to escape and encode
      Returns:
      the escaped and encoded string
    • getXOpaqueId

      public static java.lang.String getXOpaqueId()
    • addWarning

      public static void addWarning​(java.lang.String message, java.lang.Object... params)