From ab841a61bca5b4feef645e1adab4a711a552c4c0 Mon Sep 17 00:00:00 2001 From: nite23 Date: Fri, 7 Sep 2012 00:23:40 +0300 Subject: [PATCH] Thread safety fix --- .../org/atmosphere/client/TrackMessageSizeInterceptor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/cpr/src/main/java/org/atmosphere/client/TrackMessageSizeInterceptor.java b/modules/cpr/src/main/java/org/atmosphere/client/TrackMessageSizeInterceptor.java index 660672ba4f8..84a5be1e5d8 100644 --- a/modules/cpr/src/main/java/org/atmosphere/client/TrackMessageSizeInterceptor.java +++ b/modules/cpr/src/main/java/org/atmosphere/client/TrackMessageSizeInterceptor.java @@ -54,8 +54,8 @@ public class TrackMessageSizeInterceptor extends AtmosphereInterceptorAdapter { private byte[] end = END; private String endString = "|"; - private final CharsetDecoder decoder = Charset.forName(IN_ENCODING).newDecoder(); - private final CharsetEncoder encoder = Charset.forName(OUT_ENCODING).newEncoder(); + private final Charset inCharset = Charset.forName(IN_ENCODING); + private final Charset outCharset = Charset.forName(OUT_ENCODING); @Override public void configure(AtmosphereConfig config) { @@ -137,10 +137,11 @@ private byte[] transform(byte[] input) throws UnsupportedEncodingException, Char } private byte[] transform(byte[] input, int offset, int length) throws CharacterCodingException, UnsupportedEncodingException{ - CharBuffer cb = decoder.decode(ByteBuffer.wrap(input, offset, length)); + CharBuffer cb = inCharset.newDecoder().decode(ByteBuffer.wrap(input, offset, length)); int size = cb.length(); CharBuffer cb2 = CharBuffer.wrap(Integer.toString(size) + endString); ByteBuffer bb = ByteBuffer.allocate((cb2.length() + size) * 2); + CharsetEncoder encoder = outCharset.newEncoder(); encoder.encode(cb2, bb, false); encoder.encode(cb, bb, false); bb.flip();