001/** 002 * Copyright (C) 2006-2024 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}