Class DeprecationRestHandler

  • All Implemented Interfaces:
    RestHandler

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

      Modifier and Type Method Description
      void handleRequest​(RestRequest request, RestChannel channel, NodeClient client)
      Handles a rest request.
      static java.lang.String requireValidHeader​(java.lang.String value)
      Throw an exception if the value is not a valid header.
      boolean supportsContentStream()
      Indicates if the RestHandler supports content as a stream.
      static boolean validHeaderValue​(java.lang.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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DeprecationRestHandler

        public DeprecationRestHandler​(RestHandler handler,
                                      java.lang.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!)
        deprecationMessage - The message to warn users with when they use the handler
        deprecationLogger - The deprecation logger
        Throws:
        java.lang.NullPointerException - if any parameter except deprecationMessage is null
        java.lang.IllegalArgumentException - if deprecationMessage is not a valid header
    • Method Detail

      • handleRequest

        public void handleRequest​(RestRequest request,
                                  RestChannel channel,
                                  NodeClient client)
                           throws java.lang.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:
        java.lang.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​(java.lang.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 java.lang.String requireValidHeader​(java.lang.String value)
        Throw an exception if the value is not a valid header.
        Parameters:
        value - The header value to check
        Returns:
        Always value.
        Throws:
        java.lang.IllegalArgumentException - if value is not a valid header.