@@ -44,13 +44,12 @@ public class JsonQueryDataEncoder
4444 implements QueryDataEncoder
4545{
4646 private boolean closed ;
47-
48- private static final JsonFactory JSON_FACTORY = jsonFactory ();
4947 private static final String ENCODING = "json" ;
5048 private TypeEncoder [] typeEncoders ;
5149 private int [] sourcePageChannels ;
50+ private final JsonFactory factory ;
5251
53- public JsonQueryDataEncoder (Session session , List <OutputColumn > columns )
52+ public JsonQueryDataEncoder (Session session , List <OutputColumn > columns , JsonFactory factory )
5453 {
5554 this .typeEncoders = createTypeEncoders (session , requireNonNull (columns , "columns is null" )
5655 .stream ()
@@ -59,14 +58,15 @@ public JsonQueryDataEncoder(Session session, List<OutputColumn> columns)
5958 this .sourcePageChannels = requireNonNull (columns , "columns is null" ).stream ()
6059 .mapToInt (OutputColumn ::sourcePageChannel )
6160 .toArray ();
61+ this .factory = requireNonNull (factory , "factory is null" );
6262 }
6363
6464 @ Override
6565 public DataAttributes encodeTo (OutputStream output , List <Page > pages )
6666 throws IOException
6767 {
6868 verify (!closed , "JsonQueryDataEncoder is already closed" );
69- try (CountingOutputStream wrapper = new CountingOutputStream (output ); JsonGenerator generator = JSON_FACTORY .createGenerator (wrapper )) {
69+ try (CountingOutputStream wrapper = new CountingOutputStream (output ); JsonGenerator generator = factory .createGenerator (wrapper )) {
7070 writePagesToJsonGenerator (e -> { throw e ; }, generator , typeEncoders , sourcePageChannels , pages );
7171 return DataAttributes .builder ()
7272 .set (SEGMENT_SIZE , toIntExact (wrapper .getCount ()))
@@ -100,7 +100,6 @@ public static class Factory
100100 {
101101 protected final JsonFactory factory ;
102102
103- @ Inject
104103 public Factory ()
105104 {
106105 this .factory = jsonFactory ();
@@ -109,7 +108,7 @@ public Factory()
109108 @ Override
110109 public QueryDataEncoder create (Session session , List <OutputColumn > columns )
111110 {
112- return new JsonQueryDataEncoder (session , columns );
111+ return new JsonQueryDataEncoder (session , columns , factory );
113112 }
114113
115114 @ Override
0 commit comments