Skip to content

Package: ExpandedJsonLdDeserializer

ExpandedJsonLdDeserializer

nameinstructionbranchcomplexitylinemethod
ExpandedJsonLdDeserializer()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
ExpandedJsonLdDeserializer(Configuration)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
deserialize(JsonValue, Class)
M: 8 C: 110
93%
M: 2 C: 10
83%
M: 2 C: 5
71%
M: 0 C: 20
100%
M: 0 C: 1
100%
static {...}
M: 0 C: 1
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /*
2: * JB4JSON-LD
3: * Copyright (C) 2024 Czech Technical University in Prague
4: *
5: * This library is free software; you can redistribute it and/or
6: * modify it under the terms of the GNU Lesser General Public
7: * License as published by the Free Software Foundation; either
8: * version 3.0 of the License, or (at your option) any later version.
9: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library.
17: */
18: package cz.cvut.kbss.jsonld.deserialization.expanded;
19:
20: import cz.cvut.kbss.jsonld.ConfigParam;
21: import cz.cvut.kbss.jsonld.Configuration;
22: import cz.cvut.kbss.jsonld.deserialization.DefaultInstanceBuilder;
23: import cz.cvut.kbss.jsonld.deserialization.DeserializationContext;
24: import cz.cvut.kbss.jsonld.deserialization.InstanceBuilder;
25: import cz.cvut.kbss.jsonld.deserialization.JsonLdDeserializer;
26: import cz.cvut.kbss.jsonld.deserialization.reference.AssumedTypeReferenceReplacer;
27: import cz.cvut.kbss.jsonld.deserialization.reference.PendingReferenceRegistry;
28: import cz.cvut.kbss.jsonld.exception.JsonLdDeserializationException;
29: import jakarta.json.JsonArray;
30: import jakarta.json.JsonObject;
31: import jakarta.json.JsonValue;
32:
33: public class ExpandedJsonLdDeserializer extends JsonLdDeserializer {
34:
35: public ExpandedJsonLdDeserializer() {
36: }
37:
38: public ExpandedJsonLdDeserializer(Configuration configuration) {
39: super(configuration);
40: }
41:
42: @Override
43: public <T> T deserialize(JsonValue jsonLd, Class<T> resultClass) {
44:• if (jsonLd.getValueType() != JsonValue.ValueType.ARRAY) {
45: throw new JsonLdDeserializationException(
46: "Expanded JSON-LD deserializer requires a JSON-LD array as input.");
47: }
48: final JsonArray input = jsonLd.asJsonArray();
49:• if (input.size() != 1) {
50: throw new JsonLdDeserializationException(
51: "Input is not expanded JSON-LD. The input does not contain exactly one root element.");
52: }
53: deserializers.configure(configuration());
54: final JsonObject root = input.getJsonObject(0);
55: final PendingReferenceRegistry referenceRegistry = new PendingReferenceRegistry();
56:• if (deserializers.hasCustomDeserializer(resultClass)) {
57: final DeserializationContext<T> ctx = new DeserializationContext<>(resultClass, classResolver);
58:• assert deserializers.getDeserializer(ctx).isPresent();
59: return deserializers.getDeserializer(ctx).get().deserialize(root, ctx);
60: }
61: final InstanceBuilder instanceBuilder = new DefaultInstanceBuilder(classResolver, referenceRegistry);
62: new ObjectDeserializer(instanceBuilder, new DeserializerConfig(configuration(), classResolver, deserializers), resultClass)
63: .processValue(root);
64:• if (configuration().is(ConfigParam.ASSUME_TARGET_TYPE)) {
65: new AssumedTypeReferenceReplacer().replacePendingReferencesWithAssumedTypedObjects(referenceRegistry);
66: }
67: referenceRegistry.verifyNoUnresolvedReferencesExist();
68:• assert resultClass.isAssignableFrom(instanceBuilder.getCurrentRoot().getClass());
69: return resultClass.cast(instanceBuilder.getCurrentRoot());
70: }
71: }