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.StringBuilderFormattable;
20
21 import java.io.IOException;
22 import java.io.ObjectInputStream;
23 import java.io.ObjectOutputStream;
24
25
26
27
28 public class SimpleMessage implements Message, StringBuilderFormattable, CharSequence {
29 private static final long serialVersionUID = -8398002534962715992L;
30
31 private String message;
32 private transient CharSequence charSequence;
33
34
35
36
37 public SimpleMessage() {
38 this(null);
39 }
40
41
42
43
44
45 public SimpleMessage(final String message) {
46 this.message = message;
47 this.charSequence = message;
48 }
49
50
51
52
53
54 public SimpleMessage(final CharSequence charSequence) {
55
56 this.charSequence = charSequence;
57 }
58
59
60
61
62
63 @Override
64 public String getFormattedMessage() {
65 return message = message == null ? String.valueOf(charSequence) : message ;
66 }
67
68 @Override
69 public void formatTo(final StringBuilder buffer) {
70 buffer.append(message != null ? message : charSequence);
71 }
72
73
74
75
76
77 @Override
78 public String getFormat() {
79 return message;
80 }
81
82
83
84
85
86 @Override
87 public Object[] getParameters() {
88 return null;
89 }
90
91 @Override
92 public boolean equals(final Object o) {
93 if (this == o) {
94 return true;
95 }
96 if (o == null || getClass() != o.getClass()) {
97 return false;
98 }
99
100 final SimpleMessage that = (SimpleMessage) o;
101
102 return !(charSequence != null ? !charSequence.equals(that.charSequence) : that.charSequence != null);
103 }
104
105 @Override
106 public int hashCode() {
107 return charSequence != null ? charSequence.hashCode() : 0;
108 }
109
110 @Override
111 public String toString() {
112 return getFormattedMessage();
113 }
114
115
116
117
118
119
120 @Override
121 public Throwable getThrowable() {
122 return null;
123 }
124
125
126
127
128 @Override
129 public int length() {
130 return charSequence == null ? 0 : charSequence.length();
131 }
132
133 @Override
134 public char charAt(final int index) {
135 return charSequence.charAt(index);
136 }
137
138 @Override
139 public CharSequence subSequence(final int start, final int end) {
140 return charSequence.subSequence(start, end);
141 }
142
143
144 private void writeObject(final ObjectOutputStream out) throws IOException {
145 getFormattedMessage();
146 out.defaultWriteObject();
147 }
148
149 private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException {
150 in.defaultReadObject();
151 charSequence = message;
152 }
153 }