Skip to content

Package: ValueDeserializers

ValueDeserializers

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;
19:
20: import cz.cvut.kbss.jsonld.common.Configurable;
21:
22: import java.util.Optional;
23:
24: /**
25: * Manages custom deserializers.
26: */
27: public interface ValueDeserializers extends Configurable {
28:
29: /**
30: * Checks whether a custom deserializer is registered for the specified type.
31: *
32: * @param type Type to check for custom deserializer for
33: * @param <T> Type of value
34: * @return Whether a custom deserializer exists
35: */
36: <T> boolean hasCustomDeserializer(Class<T> type);
37:
38: /**
39: * Gets a custom deserializer for the specified deserialization context.
40: *
41: * @param ctx Context representing the deserialization
42: * @param <T> Type of the value
43: * @return Optional containing the custom deserializer registered for the specified type or an empty optional if there is none
44: */
45: <T> Optional<ValueDeserializer<T>> getDeserializer(DeserializationContext<T> ctx);
46:
47: /**
48: * Registers the specified deserializer for the specified type.
49: *
50: * @param forType Type to be deserialized using the specified deserializer
51: * @param deserializer Deserializer to register
52: * @param <T> Value type
53: */
54: <T> void registerDeserializer(Class<T> forType, ValueDeserializer<T> deserializer);
55: }