001/**
002 * Copyright (C) 2006-2025 Talend Inc. - www.talend.com
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.talend.sdk.component.runtime.manager.json;
017
018import java.io.InputStream;
019import java.io.ObjectStreamException;
020import java.io.OutputStream;
021import java.io.Reader;
022import java.io.Serializable;
023import java.io.Writer;
024import java.math.BigDecimal;
025import java.math.BigInteger;
026import java.util.Collection;
027import java.util.Map;
028
029import javax.json.JsonArray;
030import javax.json.JsonArrayBuilder;
031import javax.json.JsonBuilderFactory;
032import javax.json.JsonMergePatch;
033import javax.json.JsonNumber;
034import javax.json.JsonObject;
035import javax.json.JsonObjectBuilder;
036import javax.json.JsonPatch;
037import javax.json.JsonPatchBuilder;
038import javax.json.JsonPointer;
039import javax.json.JsonReader;
040import javax.json.JsonReaderFactory;
041import javax.json.JsonString;
042import javax.json.JsonStructure;
043import javax.json.JsonValue;
044import javax.json.JsonWriter;
045import javax.json.JsonWriterFactory;
046import javax.json.spi.JsonProvider;
047import javax.json.stream.JsonGenerator;
048import javax.json.stream.JsonGeneratorFactory;
049import javax.json.stream.JsonParser;
050import javax.json.stream.JsonParserFactory;
051
052import org.talend.sdk.component.runtime.serialization.SerializableService;
053
054import lombok.AllArgsConstructor;
055
056@AllArgsConstructor
057public class PreComputedJsonpProvider extends JsonProvider implements Serializable {
058
059    private final String plugin;
060
061    private final JsonProvider jsonpProvider;
062
063    private final JsonParserFactory parserFactory;
064
065    private final JsonWriterFactory writerFactory;
066
067    private final JsonBuilderFactory builderFactory;
068
069    private final JsonGeneratorFactory generatorFactory;
070
071    private final JsonReaderFactory readerFactory;
072
073    @Override
074    public JsonReaderFactory createReaderFactory(final Map<String, ?> config) {
075        return readerFactory;
076    }
077
078    @Override
079    public JsonObjectBuilder createObjectBuilder() {
080        return builderFactory.createObjectBuilder();
081    }
082
083    @Override
084    public JsonObjectBuilder createObjectBuilder(final JsonObject jsonObject) {
085        return builderFactory.createObjectBuilder(jsonObject);
086    }
087
088    @Override
089    public JsonObjectBuilder createObjectBuilder(final Map<String, Object> map) {
090        return builderFactory.createObjectBuilder(map);
091    }
092
093    @Override
094    public JsonArrayBuilder createArrayBuilder() {
095        return builderFactory.createArrayBuilder();
096    }
097
098    @Override
099    public JsonArrayBuilder createArrayBuilder(final JsonArray initialData) {
100        return builderFactory.createArrayBuilder(initialData);
101    }
102
103    @Override
104    public JsonArrayBuilder createArrayBuilder(final Collection<?> initialData) {
105        return builderFactory.createArrayBuilder(initialData);
106    }
107
108    @Override
109    public JsonPointer createPointer(final String path) {
110        return jsonpProvider.createPointer(path);
111    }
112
113    @Override
114    public JsonBuilderFactory createBuilderFactory(final Map<String, ?> config) {
115        return builderFactory;
116    }
117
118    @Override
119    public JsonString createValue(final String value) {
120        return jsonpProvider.createValue(value);
121    }
122
123    @Override
124    public JsonNumber createValue(final int value) {
125        return jsonpProvider.createValue(value);
126    }
127
128    @Override
129    public JsonNumber createValue(final long value) {
130        return jsonpProvider.createValue(value);
131    }
132
133    @Override
134    public JsonNumber createValue(final double value) {
135        return jsonpProvider.createValue(value);
136    }
137
138    @Override
139    public JsonNumber createValue(final BigDecimal value) {
140        return jsonpProvider.createValue(value);
141    }
142
143    @Override
144    public JsonNumber createValue(final BigInteger value) {
145        return jsonpProvider.createValue(value);
146    }
147
148    @Override
149    public JsonPatch createPatch(final JsonArray array) {
150        return jsonpProvider.createPatch(array);
151    }
152
153    @Override
154    public JsonPatch createDiff(final JsonStructure source, final JsonStructure target) {
155        return jsonpProvider.createDiff(source, target);
156    }
157
158    @Override
159    public JsonPatchBuilder createPatchBuilder() {
160        return jsonpProvider.createPatchBuilder();
161    }
162
163    @Override
164    public JsonPatchBuilder createPatchBuilder(final JsonArray initialData) {
165        return jsonpProvider.createPatchBuilder(initialData);
166    }
167
168    @Override
169    public JsonMergePatch createMergePatch(final JsonValue patch) {
170        return jsonpProvider.createMergePatch(patch);
171    }
172
173    @Override
174    public JsonMergePatch createMergeDiff(final JsonValue source, final JsonValue target) {
175        return jsonpProvider.createMergeDiff(source, target);
176    }
177
178    @Override
179    public JsonGeneratorFactory createGeneratorFactory(final Map<String, ?> config) {
180        return generatorFactory;
181    }
182
183    @Override
184    public JsonReader createReader(final Reader reader) {
185        return readerFactory.createReader(reader);
186    }
187
188    @Override
189    public JsonReader createReader(final InputStream in) {
190        return readerFactory.createReader(in);
191    }
192
193    @Override
194    public JsonWriter createWriter(final Writer writer) {
195        return writerFactory.createWriter(writer);
196    }
197
198    @Override
199    public JsonWriter createWriter(final OutputStream out) {
200        return writerFactory.createWriter(out);
201    }
202
203    @Override
204    public JsonWriterFactory createWriterFactory(final Map<String, ?> config) {
205        return writerFactory;
206    }
207
208    @Override
209    public JsonParser createParser(final Reader reader) {
210        return parserFactory.createParser(reader);
211    }
212
213    @Override
214    public JsonParser createParser(final InputStream in) {
215        return parserFactory.createParser(in);
216    }
217
218    @Override
219    public JsonParserFactory createParserFactory(final Map<String, ?> config) {
220        return parserFactory;
221    }
222
223    @Override
224    public JsonGenerator createGenerator(final Writer writer) {
225        return generatorFactory.createGenerator(writer);
226    }
227
228    @Override
229    public JsonGenerator createGenerator(final OutputStream out) {
230        return generatorFactory.createGenerator(out);
231    }
232
233    Object writeReplace() throws ObjectStreamException {
234        return new SerializableService(plugin, JsonProvider.class.getName());
235    }
236}