Skip to content

Commit 0aef3f2

Browse files
committed
tomd: specify encoding to use when sending data to StatsD. Sadly, StatsD does not specify an encoding and relies on the Node.JS Buffer class defailt of UTF-8, so we have to assume this is what they would choose were an explicit encoding be specified in the future. Fixes #18
1 parent 7be5083 commit 0aef3f2

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

build.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
<mkdir dir="${build.dir}/testreport"/>
6969
<mkdir dir="${build.dir}/test.tmp"/>
7070
<junit printsummary="yes" haltonfailure="yes" forkmode="once" tempdir="${build.dir}/test.tmp">
71+
<jvmarg value="-Dfile.encoding=UTF-16"/>
7172
<classpath>
7273
<pathelement location="${build.dir}/${ant.project.name}-${version.label}.jar"/>
7374
<pathelement location="${build.dir}/${ant.project.name}-test-${version.label}.jar"/>

src/main/java/com/timgroup/statsd/NonBlockingStatsDClient.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.net.DatagramPacket;
44
import java.net.DatagramSocket;
55
import java.net.InetSocketAddress;
6+
import java.nio.charset.Charset;
67
import java.util.Locale;
78
import java.util.concurrent.ExecutorService;
89
import java.util.concurrent.Executors;
@@ -37,6 +38,8 @@
3738
*/
3839
public final class NonBlockingStatsDClient extends ConvenienceMethodProvidingStatsDClient {
3940

41+
private static final Charset STATS_D_ENCODING = Charset.forName("UTF-8");
42+
4043
private static final StatsDClientErrorHandler NO_OP_HANDLER = new StatsDClientErrorHandler() {
4144
@Override public void handle(Exception e) { /* No-op */ }
4245
};
@@ -228,7 +231,7 @@ private void send(final String message) {
228231

229232
private void blockingSend(String message) {
230233
try {
231-
final byte[] sendData = message.getBytes();
234+
final byte[] sendData = message.getBytes(STATS_D_ENCODING);
232235
final DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length);
233236
clientSocket.send(sendPacket);
234237
} catch (Exception e) {

src/test/java/com/timgroup/statsd/NonBlockingStatsDClientTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.net.DatagramPacket;
1010
import java.net.DatagramSocket;
1111
import java.net.SocketException;
12+
import java.nio.charset.Charset;
1213
import java.util.ArrayList;
1314
import java.util.List;
1415
import java.util.regex.Matcher;
@@ -193,7 +194,7 @@ public DummyStatsDServer(int port) {
193194
try {
194195
final DatagramPacket packet = new DatagramPacket(new byte[256], 256);
195196
server.receive(packet);
196-
messagesReceived.add(new String(packet.getData()).trim());
197+
messagesReceived.add(new String(packet.getData(), Charset.forName("UTF-8")).trim());
197198
} catch (Exception e) { }
198199
}
199200
}).start();

0 commit comments

Comments
 (0)