Package: JsonLdDeserializer
JsonLdDeserializer
name | instruction | branch | complexity | line | method | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
JsonLdDeserializer() |
|
|
|
|
|
||||||||||||||||||||
JsonLdDeserializer(Configuration) |
|
|
|
|
|
||||||||||||||||||||
configuration() |
|
|
|
|
|
||||||||||||||||||||
createExpandedDeserializer() |
|
|
|
|
|
||||||||||||||||||||
createExpandedDeserializer(Configuration) |
|
|
|
|
|
||||||||||||||||||||
initializeTargetClassResolver() |
|
|
|
|
|
||||||||||||||||||||
lambda$initializeTargetClassResolver$0(TypeMap, Class) |
|
|
|
|
|
Coverage
1: /**
2: * Copyright (C) 2020 Czech Technical University in Prague
3: * <p>
4: * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
5: * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
6: * version.
7: * <p>
8: * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
9: * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
10: * details. You should have received a copy of the GNU General Public License along with this program. If not, see
11: * <http://www.gnu.org/licenses/>.
12: */
13: package cz.cvut.kbss.jsonld.deserialization;
14:
15: import cz.cvut.kbss.jopa.model.annotations.OWLClass;
16: import cz.cvut.kbss.jsonld.ConfigParam;
17: import cz.cvut.kbss.jsonld.Configuration;
18: import cz.cvut.kbss.jsonld.common.BeanAnnotationProcessor;
19: import cz.cvut.kbss.jsonld.common.Configurable;
20: import cz.cvut.kbss.jsonld.deserialization.expanded.ExpandedJsonLdDeserializer;
21: import cz.cvut.kbss.jsonld.deserialization.util.ClasspathScanner;
22: import cz.cvut.kbss.jsonld.deserialization.util.TargetClassResolver;
23: import cz.cvut.kbss.jsonld.deserialization.util.TargetClassResolverConfig;
24: import cz.cvut.kbss.jsonld.deserialization.util.TypeMap;
25:
26: import java.util.Objects;
27:
28: /**
29: * Takes a pre-processed JSON-LD structure and deserializes it.
30: */
31: public abstract class JsonLdDeserializer implements Configurable {
32:
33: private final Configuration configuration;
34:
35: protected final TargetClassResolver classResolver;
36:
37: protected JsonLdDeserializer() {
38: this.configuration = new Configuration();
39: this.classResolver = initializeTargetClassResolver();
40: }
41:
42: protected JsonLdDeserializer(Configuration configuration) {
43: this.configuration = Objects.requireNonNull(configuration);
44: this.classResolver = initializeTargetClassResolver();
45: }
46:
47: private TargetClassResolver initializeTargetClassResolver() {
48: final TypeMap typeMap = new TypeMap();
49: final String scanPath = configuration.get(ConfigParam.SCAN_PACKAGE, "");
50: new ClasspathScanner(c -> {
51: final OWLClass ann = c.getDeclaredAnnotation(OWLClass.class);
52:• if (ann != null) {
53: typeMap.register(BeanAnnotationProcessor.expandIriIfNecessary(ann.iri(), c), c);
54: }
55: }).processClasses(scanPath);
56: return new TargetClassResolver(typeMap,
57: new TargetClassResolverConfig(
58: configuration.is(ConfigParam.ASSUME_TARGET_TYPE),
59: configuration().is(ConfigParam.ENABLE_OPTIMISTIC_TARGET_TYPE_RESOLUTION),
60: configuration().is(ConfigParam.PREFER_SUPERCLASS)));
61: }
62:
63: @Override
64: public Configuration configuration() {
65: return configuration;
66: }
67:
68: /**
69: * Deserializes the specified JSON-LD data.
70: *
71: * @param <T> The type of the target object
72: * @param jsonLd JSON-LD structure
73: * @param resultClass Type of the result instance
74: * @return Deserialized Java instance
75: */
76: public abstract <T> T deserialize(Object jsonLd, Class<T> resultClass);
77:
78: /**
79: * Creates deserializer for expanded JSON-LD, initialized with the specified configuration.
80: *
81: * @param configuration Configuration of the deserializer
82: * @return New deserializer
83: */
84: public static JsonLdDeserializer createExpandedDeserializer(Configuration configuration) {
85: return new ExpandedJsonLdDeserializer(configuration);
86: }
87:
88: /**
89: * Creates deserializer for expanded JSON-LD.
90: *
91: * @return New deserializer
92: */
93: public static JsonLdDeserializer createExpandedDeserializer() {
94: return new ExpandedJsonLdDeserializer();
95: }
96: }