Skip to content

Commit 0ff5f9f

Browse files
committed
Start prep work for #400
1 parent f4e22ed commit 0ff5f9f

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

avro/src/main/java/com/fasterxml/jackson/dataformat/avro/AvroGenerator.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.math.BigInteger;
77

88
import org.apache.avro.io.BinaryEncoder;
9+
import org.apache.avro.io.EncoderFactory;
910

1011
import com.fasterxml.jackson.core.*;
1112
import com.fasterxml.jackson.core.base.GeneratorBase;
@@ -88,6 +89,11 @@ private Feature(boolean defaultState) {
8889
/**********************************************************
8990
*/
9091

92+
/**
93+
* @since 2.16
94+
*/
95+
protected final static EncoderFactory ENCODER_FACTORY = EncoderFactory.get();
96+
9197
/**
9298
* @since 2.16
9399
*/
@@ -146,7 +152,12 @@ public AvroGenerator(IOContext ctxt, int jsonFeatures, int avroFeatures,
146152
_formatFeatures = avroFeatures;
147153
_output = output;
148154
_avroContext = AvroWriteContext.nullContext();
149-
_encoder = ApacheCodecRecycler.encoder(_output, isEnabled(Feature.AVRO_BUFFERING));
155+
156+
final boolean buffering = isEnabled(Feature.AVRO_BUFFERING);
157+
BinaryEncoder encoderToReuse = ApacheCodecRecycler.acquireEncoder();
158+
_encoder = buffering
159+
? ENCODER_FACTORY.binaryEncoder(output, encoderToReuse)
160+
: ENCODER_FACTORY.directBinaryEncoder(output, encoderToReuse);
150161
}
151162

152163
public void setSchema(AvroSchema schema)

avro/src/main/java/com/fasterxml/jackson/dataformat/avro/apacheimpl/ApacheCodecRecycler.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.fasterxml.jackson.dataformat.avro.apacheimpl;
22

33
import java.io.InputStream;
4-
import java.io.OutputStream;
54
import java.lang.ref.SoftReference;
65
import java.util.concurrent.atomic.AtomicReference;
76

@@ -19,8 +18,6 @@ public final class ApacheCodecRecycler
1918
{
2019
protected final static DecoderFactory DECODER_FACTORY = DecoderFactory.get();
2120

22-
protected final static EncoderFactory ENCODER_FACTORY = EncoderFactory.get();
23-
2421
protected final static ThreadLocal<SoftReference<ApacheCodecRecycler>> _recycler
2522
= new ThreadLocal<SoftReference<ApacheCodecRecycler>>();
2623

@@ -49,12 +46,8 @@ public static BinaryDecoder decoder(byte[] buffer, int offset, int len)
4946
return DECODER_FACTORY.binaryDecoder(buffer, offset, len, prev);
5047
}
5148

52-
public static BinaryEncoder encoder(OutputStream out, boolean buffering)
53-
{
54-
BinaryEncoder prev = _recycler().claimEncoder();
55-
return buffering
56-
? ENCODER_FACTORY.binaryEncoder(out, prev)
57-
: ENCODER_FACTORY.directBinaryEncoder(out, prev);
49+
public static BinaryEncoder acquireEncoder() {
50+
return _recycler().claimEncoder();
5851
}
5952

6053
public static void release(BinaryDecoder dec) {

0 commit comments

Comments
 (0)