Class DeprecationRestHandler

java.lang.Object
org.elasticsearch.rest.DeprecationRestHandler
All Implemented Interfaces:
RestHandler

public class DeprecationRestHandler extends Object implements RestHandler
DeprecationRestHandler provides a proxy for any existing RestHandler so that usage of the handler can be logged using the DeprecationLogger.
  • Field Details

  • Constructor Details

    • DeprecationRestHandler

      public DeprecationRestHandler(RestHandler handler, RestRequest.Method method, String path, @Nullable org.apache.logging.log4j.Level deprecationLevel, String deprecationMessage, DeprecationLogger deprecationLogger)
      Create a DeprecationRestHandler that encapsulates the handler using the deprecationLogger to log deprecation warning.
      Parameters:
      handler - The rest handler to deprecate (it's possible that the handler is reused with a different name!)
      method - a method of a deprecated endpoint
      path - a path of a deprecated endpoint
      deprecationMessage - The message to warn users with when they use the handler
      deprecationLogger - The deprecation logger
      Throws:
      NullPointerException - if any parameter except deprecationMessage is null
      IllegalArgumentException - if deprecationMessage is not a valid header
  • Method Details

    • handleRequest

      public void handleRequest(RestRequest request, RestChannel channel, NodeClient client) throws Exception
      Handles a rest request.

      Usage is logged via the DeprecationLogger so that the actual response can be notified of deprecation as well.

      Specified by:
      handleRequest in interface RestHandler
      Parameters:
      request - The request to handle
      channel - The channel to write the request response to
      client - A client to use to make internal requests on behalf of the original request
      Throws:
      Exception
    • supportsContentStream

      public boolean supportsContentStream()
      Description copied from interface: RestHandler
      Indicates if the RestHandler supports content as a stream. A stream would be multiple objects delineated by XContent.streamSeparator(). If a handler returns true this will affect the types of content that can be sent to this endpoint.
      Specified by:
      supportsContentStream in interface RestHandler
    • validHeaderValue

      public static boolean validHeaderValue(String value)
      This does a very basic pass at validating that a header's value contains only expected characters according to RFC-5987, and those that it references.

      https://tools.ietf.org/html/rfc5987

      This is only expected to be used for assertions. The idea is that only readable US-ASCII characters are expected; the rest must be encoded with percent encoding, which makes checking for a valid character range very simple.

      Parameters:
      value - The header value to check
      Returns:
      true if the value is not obviously wrong.
    • requireValidHeader

      public static String requireValidHeader(String value)
      Throw an exception if the value is not a valid header.
      Parameters:
      value - The header value to check
      Returns:
      Always value.
      Throws:
      IllegalArgumentException - if value is not a valid header.