1 package org
.asamk
.signal
.manager
.storage
.threads
;
3 import com
.fasterxml
.jackson
.annotation
.JsonProperty
;
4 import com
.fasterxml
.jackson
.core
.JsonGenerator
;
5 import com
.fasterxml
.jackson
.core
.JsonParser
;
6 import com
.fasterxml
.jackson
.databind
.DeserializationContext
;
7 import com
.fasterxml
.jackson
.databind
.JsonDeserializer
;
8 import com
.fasterxml
.jackson
.databind
.JsonNode
;
9 import com
.fasterxml
.jackson
.databind
.JsonSerializer
;
10 import com
.fasterxml
.jackson
.databind
.ObjectMapper
;
11 import com
.fasterxml
.jackson
.databind
.SerializerProvider
;
12 import com
.fasterxml
.jackson
.databind
.annotation
.JsonDeserialize
;
13 import com
.fasterxml
.jackson
.databind
.annotation
.JsonSerialize
;
15 import java
.io
.IOException
;
16 import java
.util
.ArrayList
;
17 import java
.util
.HashMap
;
18 import java
.util
.List
;
21 public class LegacyJsonThreadStore
{
23 private static final ObjectMapper jsonProcessor
= new ObjectMapper();
25 @JsonProperty("threads")
26 @JsonSerialize(using
= MapToListSerializer
.class)
27 @JsonDeserialize(using
= ThreadsDeserializer
.class)
28 private final Map
<String
, LegacyThreadInfo
> threads
= new HashMap
<>();
30 public List
<LegacyThreadInfo
> getThreads() {
31 return new ArrayList
<>(threads
.values());
34 private static class MapToListSerializer
extends JsonSerializer
<Map
<?
, ?
>> {
37 public void serialize(
38 final Map
<?
, ?
> value
, final JsonGenerator jgen
, final SerializerProvider provider
39 ) throws IOException
{
40 jgen
.writeObject(value
.values());
44 private static class ThreadsDeserializer
extends JsonDeserializer
<Map
<String
, LegacyThreadInfo
>> {
47 public Map
<String
, LegacyThreadInfo
> deserialize(
48 JsonParser jsonParser
, DeserializationContext deserializationContext
49 ) throws IOException
{
50 var threads
= new HashMap
<String
, LegacyThreadInfo
>();
51 JsonNode node
= jsonParser
.getCodec().readTree(jsonParser
);
53 var t
= jsonProcessor
.treeToValue(n
, LegacyThreadInfo
.class);