public class ReusableParameterizedMessage extends java.lang.Object implements ReusableMessage, ParameterVisitable, Clearable
ParameterizedMessage
,
Serialized FormModifier and Type | Field and Description |
---|---|
private int |
argCount |
private java.lang.ThreadLocal<java.lang.StringBuilder> |
buffer |
private int[] |
indices |
private static int |
MAX_PARMS |
private java.lang.String |
messagePattern |
private static int |
MIN_BUILDER_SIZE |
private java.lang.Object[] |
params |
(package private) boolean |
reserved |
private static long |
serialVersionUID |
private java.lang.Throwable |
throwable |
private int |
usedCount |
private java.lang.Object[] |
varargs |
Constructor and Description |
---|
ReusableParameterizedMessage()
Creates a reusable message.
|
Modifier and Type | Method and 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... arguments) |
(package private) ReusableParameterizedMessage |
set(java.lang.String messagePattern,
java.lang.Object p0) |
(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() |
private static final int MIN_BUILDER_SIZE
private static final int MAX_PARMS
private static final long serialVersionUID
private transient java.lang.ThreadLocal<java.lang.StringBuilder> buffer
private java.lang.String messagePattern
private int argCount
private int usedCount
private final int[] indices
private transient java.lang.Object[] varargs
private transient java.lang.Object[] params
private transient java.lang.Throwable throwable
transient boolean reserved
public ReusableParameterizedMessage()
private java.lang.Object[] getTrimmedParams()
private java.lang.Object[] getParams()
public java.lang.Object[] swapParameters(java.lang.Object[] emptyReplacement)
ReusableMessage
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()
.
swapParameters
in interface ReusableMessage
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).ReusableMessage.getParameterCount()
public short getParameterCount()
ReusableMessage
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.
getParameterCount
in interface ReusableMessage
public <S> void forEachParameter(ParameterConsumer<S> action, S state)
ParameterVisitable
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.
forEachParameter
in interface ParameterVisitable
S
- type of the third parameteraction
- The action to be performed for each key-value pair in this collectionstate
- the object to be passed as the third parameter to each invocation on the
specified ParameterConsumer.public Message memento()
ReusableMessage
memento
in interface ReusableMessage
private void init(java.lang.String messagePattern, int argCount, java.lang.Object[] paramArray)
private static int count(java.lang.String messagePattern, int[] indices)
private void initThrowable(java.lang.Object[] params, int argCount, int usedParams)
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object... arguments)
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0)
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1)
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2)
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3)
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)
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)
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)
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)
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)
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)
public java.lang.String getFormat()
public java.lang.Object[] getParameters()
getParameters
in interface Message
public java.lang.Throwable getThrowable()
getThrowable
in interface Message
public java.lang.String getFormattedMessage()
getFormattedMessage
in interface Message
private java.lang.StringBuilder getBuffer()
public void formatTo(java.lang.StringBuilder builder)
StringBuilderFormattable
StringBuilder
, ideally without allocating
temporary objects.formatTo
in interface StringBuilderFormattable
builder
- the StringBuilder to write intoReusableParameterizedMessage reserve()
public java.lang.String toString()
toString
in class java.lang.Object