@@ -38,7 +38,7 @@ public class MessagePackGenerator
3838 extends GeneratorBase
3939{
4040 private static final Charset DEFAULT_CHARSET = Charset .forName ("UTF-8" );
41- private static ThreadLocal < MessagePacker > messagePackersHolder = new ThreadLocal < MessagePacker >() ;
41+ private final MessagePacker messagePacker ;
4242 private static ThreadLocal <OutputStreamBufferOutput > messageBufferOutputHolder = new ThreadLocal <OutputStreamBufferOutput >();
4343 private LinkedList <StackItem > stack ;
4444 private StackItem rootStackItem ;
@@ -95,11 +95,10 @@ List<String> getKeys()
9595 }
9696 }
9797
98- public MessagePackGenerator (int features , ObjectCodec codec , OutputStream out )
98+ public MessagePackGenerator (int features , ObjectCodec codec , OutputStream out , final MessagePack . PackerConfig packerConfig )
9999 throws IOException
100100 {
101101 super (features , codec );
102- MessagePacker messagePacker = messagePackersHolder .get ();
103102 OutputStreamBufferOutput messageBufferOutput = messageBufferOutputHolder .get ();
104103 if (messageBufferOutput == null ) {
105104 messageBufferOutput = new OutputStreamBufferOutput (out );
@@ -109,14 +108,7 @@ public MessagePackGenerator(int features, ObjectCodec codec, OutputStream out)
109108 }
110109 messageBufferOutputHolder .set (messageBufferOutput );
111110
112- if (messagePacker == null ) {
113- messagePacker = MessagePack .newDefaultPacker (messageBufferOutput );
114- }
115- else {
116- messagePacker .reset (messageBufferOutput );
117- }
118- messagePackersHolder .set (messagePacker );
119-
111+ this .messagePacker = packerConfig .newPacker (messageBufferOutput );
120112 this .stack = new LinkedList <StackItem >();
121113 }
122114
@@ -548,10 +540,6 @@ private void popStackAndStoreTheItemAsValue()
548540
549541 private MessagePacker getMessagePacker ()
550542 {
551- MessagePacker messagePacker = messagePackersHolder .get ();
552- if (messagePacker == null ) {
553- throw new IllegalStateException ("messagePacker is null" );
554- }
555543 return messagePacker ;
556544 }
557545}
0 commit comments