1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.message;
18
19 import org.apache.logging.log4j.util.PerformanceSensitive;
20 import org.apache.logging.log4j.util.StringBuilderFormattable;
21
22
23
24
25
26 @PerformanceSensitive("allocation")
27 public class ReusableObjectMessage implements ReusableMessage {
28 private static final long serialVersionUID = 6922476812535519960L;
29
30 private transient Object obj;
31 private transient String objectString;
32
33 public void set(final Object object) {
34 this.obj = object;
35 }
36
37
38
39
40
41
42 @Override
43 public String getFormattedMessage() {
44 return String.valueOf(obj);
45 }
46
47 @Override
48 public void formatTo(final StringBuilder buffer) {
49 if (obj == null || obj instanceof String) {
50 buffer.append((String) obj);
51 } else if (obj instanceof StringBuilderFormattable) {
52 ((StringBuilderFormattable) obj).formatTo(buffer);
53 } else if (obj instanceof CharSequence) {
54 buffer.append((CharSequence) obj);
55 } else if (obj instanceof Integer) {
56 buffer.append(((Integer) obj).intValue());
57 } else if (obj instanceof Long) {
58 buffer.append(((Long) obj).longValue());
59 } else if (obj instanceof Double) {
60 buffer.append(((Double) obj).doubleValue());
61 } else if (obj instanceof Boolean) {
62 buffer.append(((Boolean) obj).booleanValue());
63 } else if (obj instanceof Character) {
64 buffer.append(((Character) obj).charValue());
65 } else if (obj instanceof Short) {
66 buffer.append(((Short) obj).shortValue());
67 } else if (obj instanceof Float) {
68 buffer.append(((Float) obj).floatValue());
69 } else {
70 buffer.append(obj);
71 }
72 }
73
74
75
76
77
78
79 @Override
80 public String getFormat() {
81 return getFormattedMessage();
82 }
83
84
85
86
87
88
89 @Override
90 public Object[] getParameters() {
91 return new Object[] {obj};
92 }
93
94 @Override
95 public String toString() {
96 return getFormattedMessage();
97 }
98
99
100
101
102
103
104 @Override
105 public Throwable getThrowable() {
106 return obj instanceof Throwable ? (Throwable) obj : null;
107 }
108
109
110
111
112
113
114 @Override
115 public Object[] swapParameters(final Object[] emptyReplacement) {
116 return emptyReplacement;
117 }
118
119
120
121
122
123 @Override
124 public short getParameterCount() {
125 return 0;
126 }
127
128 @Override
129 public Message memento() {
130 return new ObjectMessage(obj);
131 }
132 }