Skip to content

Method: TypeMap()

1: /*
2: * JB4JSON-LD
3: * Copyright (C) 2023 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.util;
19:
20: import java.util.*;
21:
22: /**
23: * Represents a map of type IRIs to their mapped Java classes.
24: * <p>
25: * Used by the deserialization when determining target class from JSON-LD object types.
26: * <p>
27: * This class is not synchronized, as it is expected that types will be registered by one thread once and then only queried.
28: */
29: public class TypeMap {
30:
31: private final Map<String, Set<Class<?>>> typeMap = new HashMap<>();
32:
33: public synchronized void register(String type, Class<?> cls) {
34: if (!typeMap.containsKey(type)) {
35: // There will usually be only one class, so make the map as small as possible
36: typeMap.put(type, new HashSet<>(2));
37: }
38: typeMap.get(type).add(cls);
39: }
40:
41: public Set<Class<?>> get(String type) {
42: return typeMap.getOrDefault(type, Collections.emptySet());
43: }
44: }