Skip to content

Commit 215df17

Browse files
committed
adding the ability to inject PackerConfig to MessagePackFactory.
1 parent 13a33df commit 215df17

File tree

2 files changed

+15
-16
lines changed

2 files changed

+15
-16
lines changed

msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackFactory.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.fasterxml.jackson.core.JsonParseException;
2222
import com.fasterxml.jackson.core.JsonParser;
2323
import com.fasterxml.jackson.core.io.IOContext;
24+
import org.msgpack.core.MessagePack;
2425

2526
import java.io.File;
2627
import java.io.FileOutputStream;
@@ -35,11 +36,21 @@ public class MessagePackFactory
3536
{
3637
private static final long serialVersionUID = 2578263992015504347L;
3738

39+
private final MessagePack.PackerConfig packerConfig;
40+
41+
public MessagePackFactory() {
42+
this(MessagePack.DEFAULT_PACKER_CONFIG);
43+
}
44+
45+
public MessagePackFactory(final MessagePack.PackerConfig packerConfig) {
46+
this.packerConfig = packerConfig;
47+
}
48+
3849
@Override
3950
public JsonGenerator createGenerator(OutputStream out, JsonEncoding enc)
4051
throws IOException
4152
{
42-
return new MessagePackGenerator(_generatorFeatures, _objectCodec, out);
53+
return new MessagePackGenerator(_generatorFeatures, _objectCodec, out, packerConfig);
4354
}
4455

4556
@Override

msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackGenerator.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)