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 java.io.Serializable;
20
21 import org.apache.logging.log4j.util.PerformanceSensitive;
22
23
24
25
26
27
28
29
30
31
32 @PerformanceSensitive("allocation")
33 public final class ReusableMessageFactory implements MessageFactory2, Serializable {
34
35
36
37
38 public static final ReusableMessageFactory INSTANCE = new ReusableMessageFactory();
39
40 private static final long serialVersionUID = -8970940216592525651L;
41 private static ThreadLocal<ReusableParameterizedMessage> threadLocalParameterized = new ThreadLocal<>();
42 private static ThreadLocal<ReusableSimpleMessage> threadLocalSimpleMessage = new ThreadLocal<>();
43 private static ThreadLocal<ReusableObjectMessage> threadLocalObjectMessage = new ThreadLocal<>();
44
45
46
47
48 public ReusableMessageFactory() {
49 super();
50 }
51
52 private static ReusableParameterizedMessage getParameterized() {
53 ReusableParameterizedMessage result = threadLocalParameterized.get();
54 if (result == null) {
55 result = new ReusableParameterizedMessage();
56 threadLocalParameterized.set(result);
57 }
58 return result;
59 }
60
61 private static ReusableSimpleMessage getSimple() {
62 ReusableSimpleMessage result = threadLocalSimpleMessage.get();
63 if (result == null) {
64 result = new ReusableSimpleMessage();
65 threadLocalSimpleMessage.set(result);
66 }
67 return result;
68 }
69
70 private static ReusableObjectMessage getObject() {
71 ReusableObjectMessage result = threadLocalObjectMessage.get();
72 if (result == null) {
73 result = new ReusableObjectMessage();
74 threadLocalObjectMessage.set(result);
75 }
76 return result;
77 }
78
79 @Override
80 public Message newMessage(final CharSequence charSequence) {
81 ReusableSimpleMessage result = getSimple();
82 result.set(charSequence);
83 return result;
84 }
85
86
87
88
89
90
91
92
93
94
95 @Override
96 public Message newMessage(final String message, final Object... params) {
97 return getParameterized().set(message, params);
98 }
99
100 @Override
101 public Message newMessage(final String message, final Object p0) {
102 return getParameterized().set(message, p0);
103 }
104
105 @Override
106 public Message newMessage(final String message, final Object p0, final Object p1) {
107 return getParameterized().set(message, p0, p1);
108 }
109
110 @Override
111 public Message newMessage(final String message, final Object p0, final Object p1, final Object p2) {
112 return getParameterized().set(message, p0, p1, p2);
113 }
114
115 @Override
116 public Message newMessage(final String message, final Object p0, final Object p1, final Object p2,
117 final Object p3) {
118 return getParameterized().set(message, p0, p1, p2, p3);
119 }
120
121 @Override
122 public Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
123 final Object p4) {
124 return getParameterized().set(message, p0, p1, p2, p3, p4);
125 }
126
127 @Override
128 public Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
129 final Object p4, final Object p5) {
130 return getParameterized().set(message, p0, p1, p2, p3, p4, p5);
131 }
132
133 @Override
134 public Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
135 final Object p4, final Object p5, final Object p6) {
136 return getParameterized().set(message, p0, p1, p2, p3, p4, p5, p6);
137 }
138
139 @Override
140 public Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
141 final Object p4, final Object p5, final Object p6, final Object p7) {
142 return getParameterized().set(message, p0, p1, p2, p3, p4, p5, p6, p7);
143 }
144
145 @Override
146 public Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
147 final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
148 return getParameterized().set(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
149 }
150
151 @Override
152 public Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
153 final Object p4, final Object p5, final Object p6, final Object p7, final Object p8, final Object p9) {
154 return getParameterized().set(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
155 }
156
157
158
159
160
161
162
163
164
165 @Override
166 public Message newMessage(final String message) {
167 ReusableSimpleMessage result = getSimple();
168 result.set(message);
169 return result;
170 }
171
172
173
174
175
176
177
178
179
180
181 @Override
182 public Message newMessage(final Object message) {
183 ReusableObjectMessage result = getObject();
184 result.set(message);
185 return result;
186 }
187 }