Skip to content

Commit 8e9f7c3

Browse files
Use HashMap in favor of LinkedHashMap
1 parent 4e94a85 commit 8e9f7c3

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

src/main/java/net/dv8tion/jda/api/utils/data/DataArray.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.fasterxml.jackson.core.JsonProcessingException;
2020
import com.fasterxml.jackson.databind.ObjectMapper;
21+
import com.fasterxml.jackson.databind.module.SimpleModule;
2122
import com.fasterxml.jackson.databind.type.CollectionType;
2223
import net.dv8tion.jda.api.exceptions.ParsingException;
2324
import org.jetbrains.annotations.Contract;
@@ -44,8 +45,19 @@
4445
public class DataArray implements Iterable<Object>
4546
{
4647
private static final Logger log = LoggerFactory.getLogger(DataObject.class);
47-
private static final ObjectMapper mapper = new ObjectMapper();
48-
private static final CollectionType listType = mapper.getTypeFactory().constructCollectionType(List.class, Object.class);
48+
private static final ObjectMapper mapper;
49+
private static final SimpleModule module;
50+
private static final CollectionType listType;
51+
52+
static
53+
{
54+
mapper = new ObjectMapper();
55+
module = new SimpleModule();
56+
module.addAbstractTypeMapping(Map.class, HashMap.class);
57+
module.addAbstractTypeMapping(List.class, ArrayList.class);
58+
mapper.registerModule(module);
59+
listType = mapper.getTypeFactory().constructRawCollectionType(ArrayList.class);
60+
}
4961

5062
protected final List<Object> data;
5163

src/main/java/net/dv8tion/jda/api/utils/data/DataObject.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.fasterxml.jackson.core.JsonProcessingException;
2020
import com.fasterxml.jackson.databind.ObjectMapper;
21+
import com.fasterxml.jackson.databind.module.SimpleModule;
2122
import com.fasterxml.jackson.databind.type.MapType;
2223
import net.dv8tion.jda.api.exceptions.ParsingException;
2324
import org.jetbrains.annotations.Contract;
@@ -44,8 +45,19 @@
4445
public class DataObject implements SerializableData
4546
{
4647
private static final Logger log = LoggerFactory.getLogger(DataObject.class);
47-
private static final ObjectMapper mapper = new ObjectMapper();
48-
private static final MapType mapType = mapper.getTypeFactory().constructMapType(Map.class, String.class, Object.class);
48+
private static final ObjectMapper mapper;
49+
private static final SimpleModule module;
50+
private static final MapType mapType;
51+
52+
static
53+
{
54+
mapper = new ObjectMapper();
55+
module = new SimpleModule();
56+
module.addAbstractTypeMapping(Map.class, HashMap.class);
57+
module.addAbstractTypeMapping(List.class, ArrayList.class);
58+
mapper.registerModule(module);
59+
mapType = mapper.getTypeFactory().constructRawMapType(HashMap.class);
60+
}
4961

5062
protected final Map<String, Object> data;
5163

src/test/java/JsonTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public void testParse()
3636
public void testJsonToString()
3737
{
3838
DataObject object = DataObject.fromJson(json);
39-
Assertions.assertEquals(json, object.toString()); // lucky that this works here :)
39+
String result = object.toString();
40+
DataObject symmetric = DataObject.fromJson(result);
41+
Assertions.assertEquals(object.toMap(), symmetric.toMap()); // lucky that this works here :)
4042
}
4143
}

0 commit comments

Comments
 (0)