Skip to content
This repository was archived by the owner on Aug 29, 2024. It is now read-only.

Commit eb5371f

Browse files
committed
Add missing handling of array JsonNode
1 parent 3ac41e2 commit eb5371f

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

src/main/java/org/idmef/IDMEFObject.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,29 +58,40 @@ public IDMEFObject()
5858
properties.putAll(map);
5959
}
6060

61-
private static void putFields(IDMEFObject idmefObject, JsonNode node) throws IDMEFException {
61+
private static Object convertField(JsonNode value) throws IDMEFException {
62+
if (value.isInt())
63+
return value.asInt();
64+
else if (value.isTextual())
65+
return value.textValue();
66+
else if (value.isObject())
67+
return new IDMEFObject(value);
68+
else if (value.isArray()) {
69+
List<Object> l = new ArrayList<>();
70+
71+
for(int i = 0; i < value.size(); i++)
72+
l.add(convertField(value.get(i)));
73+
74+
return l;
75+
} else
76+
throw new IDMEFException("Unhandled node type: " + value.getClass().getName());
77+
}
78+
79+
private void putFields(JsonNode node) throws IDMEFException {
6280
Iterator<Map.Entry<String, JsonNode>> fields = node.fields();
6381

6482
while (fields.hasNext()) {
6583
Map.Entry<String, JsonNode> field = fields.next();
6684
String key = field.getKey();
6785
JsonNode value = field.getValue();
6886

69-
if (value.isInt())
70-
idmefObject.put(key, value.asInt());
71-
else if (value.isTextual())
72-
idmefObject.put(key, value.textValue());
73-
else if (value.isObject())
74-
idmefObject.put(key, new IDMEFObject(value));
75-
else
76-
throw new IDMEFException("Unhandled node type: " + value.getClass().getName());
87+
put(key, convertField(value));
7788
}
7889
}
7990

8091
IDMEFObject(JsonNode node) throws IDMEFException {
8192
this();
8293

83-
putFields(this, node);
94+
putFields(node);
8495
}
8596

8697
@JsonAnyGetter

src/test/java/TestDeserialize.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ void testDeserializeMessage1() {
2626
System.err.println("Message: " + msg.getProperties().getClass().getName());
2727
System.err.println("Analyzer: " + msg.get("Analyzer").getClass().getName());
2828

29-
assertEquals(deserialize(Util.string1()), Util.message1());
29+
assertEquals(msg, Util.message1());
3030
}
3131

3232
@Test

0 commit comments

Comments
 (0)