Class ReusableParameterizedMessage

    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      Resets the object to a clean state.
      private static int count​(java.lang.String messagePattern, int[] indices)  
      <S> void forEachParameter​(ParameterConsumer<S> action, S state)
      Performs the given action for each parameter until all values have been processed or the action throws an exception.
      void formatTo​(java.lang.StringBuilder builder)
      Writes a text representation of this object into the specified StringBuilder, ideally without allocating temporary objects.
      private java.lang.StringBuilder getBuffer()  
      java.lang.String getFormat()
      Returns the message pattern.
      java.lang.String getFormattedMessage()
      Returns the formatted message.
      short getParameterCount()
      Returns the number of parameters that was used to initialize this reusable message for the current content.
      java.lang.Object[] getParameters()
      Returns the message parameters.
      private java.lang.Object[] getParams()  
      java.lang.Throwable getThrowable()
      Returns the Throwable that was given as the last argument, if any.
      private java.lang.Object[] getTrimmedParams()  
      private void init​(java.lang.String messagePattern, int argCount, java.lang.Object[] paramArray)  
      private void initThrowable​(java.lang.Object[] params, int argCount, int usedParams)  
      Message memento()
      Returns an immutable snapshot of the current internal state of this reusable message.
      (package private) ReusableParameterizedMessage reserve()
      Sets the reserved flag to true and returns this object.
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object... arguments)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8)  
      (package private) ReusableParameterizedMessage set​(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8, java.lang.Object p9)  
      java.lang.Object[] swapParameters​(java.lang.Object[] emptyReplacement)
      Returns the parameter array that was used to initialize this reusable message and replaces it with the specified array.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • buffer

        private transient java.lang.ThreadLocal<java.lang.StringBuilder> buffer
      • messagePattern

        private java.lang.String messagePattern
      • argCount

        private int argCount
      • usedCount

        private int usedCount
      • indices

        private final int[] indices
      • varargs

        private transient java.lang.Object[] varargs
      • params

        private transient java.lang.Object[] params
      • throwable

        private transient java.lang.Throwable throwable
      • reserved

        transient boolean reserved
    • Constructor Detail

      • ReusableParameterizedMessage

        public ReusableParameterizedMessage()
        Creates a reusable message.
    • Method Detail

      • getTrimmedParams

        private java.lang.Object[] getTrimmedParams()
      • getParams

        private java.lang.Object[] getParams()
      • swapParameters

        public java.lang.Object[] swapParameters​(java.lang.Object[] emptyReplacement)
        Description copied from interface: ReusableMessage
        Returns the parameter array that was used to initialize this reusable message and replaces it with the specified array. The returned parameter array will no longer be modified by this reusable message. The specified array is now "owned" by this reusable message and can be modified if necessary for the next log event.

        ReusableMessages that have no parameters return the specified array.

        This method is used by asynchronous loggers to pass the parameter array to a background thread without allocating new objects. The actual number of parameters in the returned array can be determined with ReusableMessage.getParameterCount().

        Specified by:
        swapParameters in interface ReusableMessage
        Parameters:
        emptyReplacement - the parameter array that can be used for subsequent uses of this reusable message. This replacement array must have at least 10 elements (the number of varargs supported by the Logger API).
        Returns:
        the parameter array for the current message content. This may be a vararg array of any length, or it may be a reusable array of 10 elements used to hold the unrolled vararg parameters.
        See Also:
        ReusableMessage.getParameterCount()
      • getParameterCount

        public short getParameterCount()
        Description copied from interface: ReusableMessage
        Returns the number of parameters that was used to initialize this reusable message for the current content.

        The parameter array returned by ReusableMessage.swapParameters(Object[]) may be larger than the actual number of parameters. Callers should use this method to determine how many elements the array contains.

        Specified by:
        getParameterCount in interface ReusableMessage
        Returns:
        the current number of parameters
      • forEachParameter

        public <S> void forEachParameter​(ParameterConsumer<S> action,
                                         S state)
        Description copied from interface: ParameterVisitable
        Performs the given action for each parameter until all values have been processed or the action throws an exception.

        The second parameter lets callers pass in a stateful object to be modified with the key-value pairs, so the TriConsumer implementation itself can be stateless and potentially reusable.

        Specified by:
        forEachParameter in interface ParameterVisitable
        Type Parameters:
        S - type of the third parameter
        Parameters:
        action - The action to be performed for each key-value pair in this collection
        state - the object to be passed as the third parameter to each invocation on the specified ParameterConsumer.
      • memento

        public Message memento()
        Description copied from interface: ReusableMessage
        Returns an immutable snapshot of the current internal state of this reusable message. The returned snapshot will not be affected by subsequent modifications of this reusable message.
        Specified by:
        memento in interface ReusableMessage
        Returns:
        an immutable snapshot of this message
      • init

        private void init​(java.lang.String messagePattern,
                          int argCount,
                          java.lang.Object[] paramArray)
      • count

        private static int count​(java.lang.String messagePattern,
                                 int[] indices)
      • initThrowable

        private void initThrowable​(java.lang.Object[] params,
                                   int argCount,
                                   int usedParams)
      • set

        ReusableParameterizedMessage set​(java.lang.String messagePattern,
                                         java.lang.Object p0,
                                         java.lang.Object p1,
                                         java.lang.Object p2)
      • set

        ReusableParameterizedMessage set​(java.lang.String messagePattern,
                                         java.lang.Object p0,
                                         java.lang.Object p1,
                                         java.lang.Object p2,
                                         java.lang.Object p3)
      • set

        ReusableParameterizedMessage set​(java.lang.String messagePattern,
                                         java.lang.Object p0,
                                         java.lang.Object p1,
                                         java.lang.Object p2,
                                         java.lang.Object p3,
                                         java.lang.Object p4)
      • set

        ReusableParameterizedMessage set​(java.lang.String messagePattern,
                                         java.lang.Object p0,
                                         java.lang.Object p1,
                                         java.lang.Object p2,
                                         java.lang.Object p3,
                                         java.lang.Object p4,
                                         java.lang.Object p5)
      • set

        ReusableParameterizedMessage set​(java.lang.String messagePattern,
                                         java.lang.Object p0,
                                         java.lang.Object p1,
                                         java.lang.Object p2,
                                         java.lang.Object p3,
                                         java.lang.Object p4,
                                         java.lang.Object p5,
                                         java.lang.Object p6)
      • set

        ReusableParameterizedMessage set​(java.lang.String messagePattern,
                                         java.lang.Object p0,
                                         java.lang.Object p1,
                                         java.lang.Object p2,
                                         java.lang.Object p3,
                                         java.lang.Object p4,
                                         java.lang.Object p5,
                                         java.lang.Object p6,
                                         java.lang.Object p7)
      • set

        ReusableParameterizedMessage set​(java.lang.String messagePattern,
                                         java.lang.Object p0,
                                         java.lang.Object p1,
                                         java.lang.Object p2,
                                         java.lang.Object p3,
                                         java.lang.Object p4,
                                         java.lang.Object p5,
                                         java.lang.Object p6,
                                         java.lang.Object p7,
                                         java.lang.Object p8)
      • set

        ReusableParameterizedMessage set​(java.lang.String messagePattern,
                                         java.lang.Object p0,
                                         java.lang.Object p1,
                                         java.lang.Object p2,
                                         java.lang.Object p3,
                                         java.lang.Object p4,
                                         java.lang.Object p5,
                                         java.lang.Object p6,
                                         java.lang.Object p7,
                                         java.lang.Object p8,
                                         java.lang.Object p9)
      • getFormat

        public java.lang.String getFormat()
        Returns the message pattern.
        Specified by:
        getFormat in interface Message
        Returns:
        the message pattern.
      • getParameters

        public java.lang.Object[] getParameters()
        Returns the message parameters.
        Specified by:
        getParameters in interface Message
        Returns:
        the message parameters.
      • getThrowable

        public java.lang.Throwable getThrowable()
        Returns the Throwable that was given as the last argument, if any. It will not survive serialization. The Throwable exists as part of the message primarily so that it can be extracted from the end of the list of parameters and then be added to the LogEvent. As such, the Throwable in the event should not be used once the LogEvent has been constructed.
        Specified by:
        getThrowable in interface Message
        Returns:
        the Throwable, if any.
      • getFormattedMessage

        public java.lang.String getFormattedMessage()
        Returns the formatted message.
        Specified by:
        getFormattedMessage in interface Message
        Returns:
        the formatted message.
      • getBuffer

        private java.lang.StringBuilder getBuffer()
      • formatTo

        public void formatTo​(java.lang.StringBuilder builder)
        Description copied from interface: StringBuilderFormattable
        Writes a text representation of this object into the specified StringBuilder, ideally without allocating temporary objects.
        Specified by:
        formatTo in interface StringBuilderFormattable
        Parameters:
        builder - the StringBuilder to write into
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • clear

        public void clear()
        Description copied from interface: Clearable
        Resets the object to a clean state.
        Specified by:
        clear in interface Clearable