Skip to content

Package: JsonBinding

JsonBinding

nameinstructionbranchcomplexitylinemethod
JsonBinding(JsonBindingBuilder)
M: 45 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 8 C: 0
0%
M: 1 C: 0
0%
close()
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
deserialize(Type, JsonParser, DeserializationContextImpl)
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
fromJson(InputStream, Class)
M: 14 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
fromJson(InputStream, Type)
M: 14 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
fromJson(JsonParser, Class)
M: 11 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
fromJson(JsonParser, Type)
M: 11 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
fromJson(Reader, Class)
M: 18 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
fromJson(Reader, Type)
M: 18 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
fromJson(String, Class)
M: 21 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
fromJson(String, Type)
M: 21 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
fromJsonStructure(JsonStructure, Class)
M: 15 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
fromJsonStructure(JsonStructure, Type)
M: 15 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
inputStreamParser(InputStream)
M: 15 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
streamGenerator(OutputStream)
M: 26 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
toJson(Object)
M: 19 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
toJson(Object, JsonGenerator)
M: 11 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
toJson(Object, OutputStream)
M: 13 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
toJson(Object, Type)
M: 20 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
toJson(Object, Type, JsonGenerator)
M: 12 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
toJson(Object, Type, OutputStream)
M: 14 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
toJson(Object, Type, Writer)
M: 14 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
toJson(Object, Writer)
M: 13 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
toJsonStructure(Object)
M: 20 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
toJsonStructure(Object, Type)
M: 21 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
writerGenerator(Writer)
M: 24 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*
2: * Copyright (c) 2016, 2022 Oracle and/or its affiliates. All rights reserved.
3: *
4: * This program and the accompanying materials are made available under the
5: * terms of the Eclipse Public License v. 2.0 which is available at
6: * http://www.eclipse.org/legal/epl-2.0,
7: * or the Eclipse Distribution License v. 1.0 which is available at
8: * http://www.eclipse.org/org/documents/edl-v10.php.
9: *
10: * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
11: */
12:
13: package org.eclipse.yasson.internal;
14:
15: import java.io.InputStream;
16: import java.io.OutputStream;
17: import java.io.Reader;
18: import java.io.StringReader;
19: import java.io.StringWriter;
20: import java.io.Writer;
21: import java.lang.reflect.Type;
22: import java.nio.charset.Charset;
23: import java.util.Map;
24: import java.util.Set;
25:
26: import jakarta.json.JsonStructure;
27: import jakarta.json.bind.JsonbConfig;
28: import jakarta.json.bind.JsonbException;
29: import jakarta.json.spi.JsonProvider;
30: import jakarta.json.stream.JsonGenerator;
31: import jakarta.json.stream.JsonParser;
32:
33: import org.eclipse.yasson.YassonJsonb;
34: import org.eclipse.yasson.internal.jsonstructure.JsonGeneratorToStructureAdapter;
35: import org.eclipse.yasson.internal.jsonstructure.JsonStructureToParserAdapter;
36:
37: /**
38: * Implementation of Jsonb interface.
39: */
40: public class JsonBinding implements YassonJsonb {
41:
42: private final JsonbContext jsonbContext;
43:
44: JsonBinding(JsonBindingBuilder builder) {
45: this.jsonbContext = new JsonbContext(builder.getConfig(), builder.getProvider().orElseGet(JsonProvider::provider));
46: Set<Class<?>> eagerInitClasses = this.jsonbContext.getConfigProperties().getEagerInitClasses();
47:• for (Class<?> eagerInitClass : eagerInitClasses) {
48: // Eagerly initialize requested ClassModels and Serializers
49: jsonbContext.getChainModelCreator().deserializerChain(eagerInitClass);
50: jsonbContext.getSerializationModelCreator().serializerChain(eagerInitClass, true, true);
51: }
52: }
53:
54: private <T> T deserialize(final Type type, final JsonParser parser, final DeserializationContextImpl unmarshaller) {
55: return unmarshaller.deserialize(type, parser);
56: }
57:
58: @Override
59: public <T> T fromJson(String str, Class<T> type) throws JsonbException {
60: final JsonParser parser = jsonbContext.getJsonProvider().createParser(new StringReader(str));
61: final DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
62: return deserialize(type, parser, unmarshaller);
63: }
64:
65: @Override
66: public <T> T fromJson(String str, Type type) throws JsonbException {
67: JsonParser parser = jsonbContext.getJsonProvider().createParser(new StringReader(str));
68: DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
69: return deserialize(type, parser, unmarshaller);
70: }
71:
72: @Override
73: public <T> T fromJson(Reader reader, Class<T> type) throws JsonbException {
74: JsonParser parser = jsonbContext.getJsonProvider().createParser(reader);
75: DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
76: return deserialize(type, parser, unmarshaller);
77: }
78:
79: @Override
80: public <T> T fromJson(Reader reader, Type type) throws JsonbException {
81: JsonParser parser = jsonbContext.getJsonProvider().createParser(reader);
82: DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
83: return deserialize(type, parser, unmarshaller);
84: }
85:
86: @Override
87: public <T> T fromJson(InputStream stream, Class<T> clazz) throws JsonbException {
88: DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
89: return deserialize(clazz, inputStreamParser(stream), unmarshaller);
90: }
91:
92: @Override
93: public <T> T fromJson(InputStream stream, Type type) throws JsonbException {
94: DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
95: return deserialize(type, inputStreamParser(stream), unmarshaller);
96: }
97:
98: @Override
99: public <T> T fromJsonStructure(JsonStructure jsonStructure, Class<T> type) throws JsonbException {
100: JsonParser parser = new JsonStructureToParserAdapter(jsonStructure);
101: return deserialize(type, parser, new DeserializationContextImpl(jsonbContext));
102: }
103:
104: @Override
105: public <T> T fromJsonStructure(JsonStructure jsonStructure, Type runtimeType) throws JsonbException {
106: JsonParser parser = new JsonStructureToParserAdapter(jsonStructure);
107: return deserialize(runtimeType, parser, new DeserializationContextImpl(jsonbContext));
108: }
109:
110: private JsonParser inputStreamParser(InputStream stream) {
111: return jsonbContext.getJsonParserFactory()
112: .createParser(stream,
113: Charset.forName((String) jsonbContext.getConfig()
114: .getProperty(JsonbConfig.ENCODING).orElse("UTF-8")));
115: }
116:
117: @Override
118: public String toJson(Object object) throws JsonbException {
119: StringWriter writer = new StringWriter();
120: final JsonGenerator generator = writerGenerator(writer);
121: new SerializationContextImpl(jsonbContext).marshall(object, generator);
122: return writer.toString();
123: }
124:
125: @Override
126: public String toJson(Object object, Type type) throws JsonbException {
127: StringWriter writer = new StringWriter();
128: final JsonGenerator generator = writerGenerator(writer);
129: new SerializationContextImpl(jsonbContext, type).marshall(object, generator);
130: return writer.toString();
131: }
132:
133: @Override
134: public void toJson(Object object, Writer writer) throws JsonbException {
135: final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext);
136: marshaller.marshallWithoutClose(object, writerGenerator(writer));
137: }
138:
139: @Override
140: public void toJson(Object object, Type type, Writer writer) throws JsonbException {
141: final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext, type);
142: marshaller.marshallWithoutClose(object, writerGenerator(writer));
143: }
144:
145: private JsonGenerator writerGenerator(Writer writer) {
146: Map<String, ?> factoryProperties = jsonbContext.createJsonpProperties(jsonbContext.getConfig());
147:• if (factoryProperties.isEmpty()) {
148: return jsonbContext.getJsonProvider().createGenerator(writer);
149: }
150: return jsonbContext.getJsonProvider().createGeneratorFactory(factoryProperties).createGenerator(writer);
151: }
152:
153: @Override
154: public void toJson(Object object, OutputStream stream) throws JsonbException {
155: final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext);
156: marshaller.marshall(object, streamGenerator(stream));
157: }
158:
159: @Override
160: public void toJson(Object object, Type type, OutputStream stream) throws JsonbException {
161: final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext, type);
162: marshaller.marshall(object, streamGenerator(stream));
163: }
164:
165: @Override
166: public <T> T fromJson(JsonParser jsonParser, Class<T> type) throws JsonbException {
167: DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
168: return unmarshaller.deserialize(type, jsonParser);
169: }
170:
171: @Override
172: public <T> T fromJson(JsonParser jsonParser, Type runtimeType) throws JsonbException {
173: DeserializationContextImpl unmarshaller = new DeserializationContextImpl(jsonbContext);
174: return unmarshaller.deserialize(runtimeType, jsonParser);
175: }
176:
177: @Override
178: public void toJson(Object object, JsonGenerator jsonGenerator) throws JsonbException {
179: final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext);
180: marshaller.marshallWithoutClose(object, jsonGenerator);
181: }
182:
183: @Override
184: public void toJson(Object object, Type runtimeType, JsonGenerator jsonGenerator) throws JsonbException {
185: final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext, runtimeType);
186: marshaller.marshallWithoutClose(object, jsonGenerator);
187: }
188:
189: @Override
190: public JsonStructure toJsonStructure(Object object) throws JsonbException {
191: JsonGeneratorToStructureAdapter structureGenerator = new JsonGeneratorToStructureAdapter(jsonbContext.getJsonProvider());
192: final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext);
193: marshaller.marshall(object, structureGenerator);
194: return structureGenerator.getRootStructure();
195: }
196:
197: @Override
198: public JsonStructure toJsonStructure(Object object, Type runtimeType) throws JsonbException {
199: JsonGeneratorToStructureAdapter structureGenerator = new JsonGeneratorToStructureAdapter(jsonbContext.getJsonProvider());
200: final SerializationContextImpl marshaller = new SerializationContextImpl(jsonbContext, runtimeType);
201: marshaller.marshall(object, structureGenerator);
202: return structureGenerator.getRootStructure();
203: }
204:
205: private JsonGenerator streamGenerator(OutputStream stream) {
206: Map<String, ?> factoryProperties = jsonbContext.createJsonpProperties(jsonbContext.getConfig());
207: final String encoding = (String) jsonbContext.getConfig().getProperty(JsonbConfig.ENCODING).orElse("UTF-8");
208: return jsonbContext.getJsonProvider().createGeneratorFactory(factoryProperties)
209: .createGenerator(stream, Charset.forName(encoding));
210: }
211:
212: @Override
213: public void close() throws Exception {
214: jsonbContext.getComponentInstanceCreator().close();
215: }
216:
217: }