diff --git a/full-backend-tests/pom.xml b/full-backend-tests/pom.xml
index ecd82822148d..c6901a79c50c 100644
--- a/full-backend-tests/pom.xml
+++ b/full-backend-tests/pom.xml
@@ -139,6 +139,11 @@
jackson-databind
test
+
+ com.fasterxml.jackson.module
+ jackson-module-scala_3
+ test
+
commons-io
commons-io
diff --git a/graylog2-server/pom.xml b/graylog2-server/pom.xml
index bf89ec5ee094..ade65a02b50d 100644
--- a/graylog2-server/pom.xml
+++ b/graylog2-server/pom.xml
@@ -178,12 +178,6 @@
com.fasterxml.jackson.module
jackson-module-jsonSchema
-
-
- com.fasterxml.jackson.module
- jackson-module-scala_2.13
- 2.9.10
-
com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
diff --git a/graylog2-server/src/main/java/org/graylog/plugins/beats/Beats2Codec.java b/graylog2-server/src/main/java/org/graylog/plugins/beats/Beats2Codec.java
index 9b3c88e92f3b..a97d83b11d8c 100644
--- a/graylog2-server/src/main/java/org/graylog/plugins/beats/Beats2Codec.java
+++ b/graylog2-server/src/main/java/org/graylog/plugins/beats/Beats2Codec.java
@@ -70,7 +70,7 @@ public Message decode(@Nonnull RawMessage rawMessage) {
final JsonNode event;
try {
event = objectMapper.readTree(payload);
- if (event == null) {
+ if (event == null || event.isMissingNode()) {
throw new IOException("null result");
}
} catch (IOException e) {
diff --git a/graylog2-server/src/main/java/org/graylog2/shared/bindings/providers/ObjectMapperProvider.java b/graylog2-server/src/main/java/org/graylog2/shared/bindings/providers/ObjectMapperProvider.java
index d244e582fb59..6d827f568ce7 100644
--- a/graylog2-server/src/main/java/org/graylog2/shared/bindings/providers/ObjectMapperProvider.java
+++ b/graylog2-server/src/main/java/org/graylog2/shared/bindings/providers/ObjectMapperProvider.java
@@ -25,6 +25,7 @@
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.type.TypeFactory;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
import com.fasterxml.jackson.datatype.guava.GuavaModule;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.joda.JodaModule;
@@ -80,7 +81,7 @@ public class ObjectMapperProvider implements Provider {
private final LoadingCache mapperByTimeZone = CacheBuilder.newBuilder()
.maximumSize(DateTimeZone.getAvailableIDs().size())
.build(
- new CacheLoader() {
+ new CacheLoader<>() {
@Override
public ObjectMapper load(@Nonnull DateTimeZone key) {
return objectMapper.copy().setTimeZone(key.toTimeZone());
@@ -109,11 +110,13 @@ public ObjectMapperProvider(@GraylogClassLoader final ClassLoader classLoader,
this.objectMapper = mapper
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
+ .disable(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS)
.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE)
.disable(DeserializationFeature.FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY)
.setPropertyNamingStrategy(new PropertyNamingStrategy.SnakeCaseStrategy())
.setSubtypeResolver(subtypeResolver)
.setTypeFactory(typeFactory)
+ .setDateFormat(new StdDateFormat().withColonInTimeZone(false))
.registerModule(new GuavaModule())
.registerModule(new JodaModule())
.registerModule(new Jdk8Module())
diff --git a/graylog2-server/src/test/java/org/graylog/events/contentpack/facade/EventDefinitionFacadeTest.java b/graylog2-server/src/test/java/org/graylog/events/contentpack/facade/EventDefinitionFacadeTest.java
index aa99f2c324b2..3c3ff47cf65e 100644
--- a/graylog2-server/src/test/java/org/graylog/events/contentpack/facade/EventDefinitionFacadeTest.java
+++ b/graylog2-server/src/test/java/org/graylog/events/contentpack/facade/EventDefinitionFacadeTest.java
@@ -100,14 +100,14 @@ public class EventDefinitionFacadeTest {
@Rule
public final MongoDBInstance mongodb = MongoDBInstance.createForClass();
- private ObjectMapper objectMapper = new ObjectMapperProvider().get();
+ private ObjectMapper objectMapper;
private EventDefinitionFacade facade;
@Rule
public final MockitoRule mockitoRule = MockitoJUnit.rule();
- private MongoJackObjectMapperProvider mapperProvider = new MongoJackObjectMapperProvider(objectMapper);
+ private MongoJackObjectMapperProvider mapperProvider;
@Mock
private DBEventProcessorStateService stateService;
@@ -129,11 +129,14 @@ public class EventDefinitionFacadeTest {
@Before
@SuppressForbidden("Using Executors.newSingleThreadExecutor() is okay in tests")
public void setUp() throws Exception {
+ objectMapper = new ObjectMapperProvider().get();
objectMapper.registerSubtypes(
AggregationEventProcessorConfig.class,
PersistToStreamsStorageHandler.Config.class,
TemplateFieldValueProvider.Config.class,
AggregationEventProcessorConfigEntity.class);
+ mapperProvider = new MongoJackObjectMapperProvider(objectMapper);
+
stateService = mock(DBEventProcessorStateService.class);
jobDefinitionService = mock(DBJobDefinitionService.class);
jobTriggerService = mock(DBJobTriggerService.class);
diff --git a/graylog2-server/src/test/java/org/graylog/events/contentpack/facade/NotificationFacadeTest.java b/graylog2-server/src/test/java/org/graylog/events/contentpack/facade/NotificationFacadeTest.java
index 197762c4eeae..f0c0ca7c2392 100644
--- a/graylog2-server/src/test/java/org/graylog/events/contentpack/facade/NotificationFacadeTest.java
+++ b/graylog2-server/src/test/java/org/graylog/events/contentpack/facade/NotificationFacadeTest.java
@@ -73,7 +73,7 @@ public class NotificationFacadeTest {
@Rule
public final MongoDBInstance mongodb = MongoDBInstance.createForClass();
- private ObjectMapper objectMapper = new ObjectMapperProvider().get();
+ private ObjectMapper objectMapper;
private NotificationFacade facade;
@@ -98,17 +98,20 @@ public class NotificationFacadeTest {
@Rule
public final MockitoRule mockitoRule = MockitoJUnit.rule();
- private MongoJackObjectMapperProvider mapperProvider = new MongoJackObjectMapperProvider(objectMapper);
+ private MongoJackObjectMapperProvider mapperProvider;
@Before
@SuppressForbidden("Using Executors.newSingleThreadExecutor() is okay in tests")
public void setUp() throws Exception {
+ objectMapper = new ObjectMapperProvider().get();
objectMapper.registerSubtypes(
EmailEventNotificationConfig.class,
EmailEventNotificationConfigEntity.class,
HttpEventNotificationConfigEntity.class,
HTTPEventNotificationConfig.class
);
+ mapperProvider = new MongoJackObjectMapperProvider(objectMapper);
+
jobDefinitionService = mock(DBJobDefinitionService.class);
stateService = mock(DBEventProcessorStateService.class);
eventDefinitionService = new DBEventDefinitionService(mongodb.mongoConnection(), mapperProvider, stateService, mock(EntityOwnershipService.class), null);
diff --git a/graylog2-server/src/test/java/org/graylog2/database/PaginatedDbServiceTest.java b/graylog2-server/src/test/java/org/graylog2/database/PaginatedDbServiceTest.java
index 039c6fd11b4a..a77442b36508 100644
--- a/graylog2-server/src/test/java/org/graylog2/database/PaginatedDbServiceTest.java
+++ b/graylog2-server/src/test/java/org/graylog2/database/PaginatedDbServiceTest.java
@@ -26,7 +26,6 @@
import org.graylog2.bindings.providers.MongoJackObjectMapperProvider;
import org.junit.After;
import org.junit.Before;
-import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.mongojack.DBQuery;
@@ -56,7 +55,7 @@ public static class TestDTO {
public String title;
@JsonCreator
- public TestDTO(@JsonProperty("id") String id, @JsonProperty("title") String title) {
+ public TestDTO(@JsonProperty("id") @Id String id, @JsonProperty("title") String title) {
this.id = id;
this.title = title;
}
diff --git a/graylog2-server/src/test/java/org/graylog2/jackson/MongoJodaDateTimeSerializerTest.java b/graylog2-server/src/test/java/org/graylog2/jackson/MongoJodaDateTimeSerializerTest.java
index 107b871fbc6f..e33ab9ae262f 100644
--- a/graylog2-server/src/test/java/org/graylog2/jackson/MongoJodaDateTimeSerializerTest.java
+++ b/graylog2-server/src/test/java/org/graylog2/jackson/MongoJodaDateTimeSerializerTest.java
@@ -54,4 +54,4 @@ public TestBean(DateTime dateTime) {
this.dateTime = dateTime;
}
}
-}
\ No newline at end of file
+}
diff --git a/graylog2-server/src/test/java/org/graylog2/jackson/MongoZonedDateTimeSerializerTest.java b/graylog2-server/src/test/java/org/graylog2/jackson/MongoZonedDateTimeSerializerTest.java
index 69d0c55c8f88..c7c4abbb352b 100644
--- a/graylog2-server/src/test/java/org/graylog2/jackson/MongoZonedDateTimeSerializerTest.java
+++ b/graylog2-server/src/test/java/org/graylog2/jackson/MongoZonedDateTimeSerializerTest.java
@@ -55,4 +55,4 @@ public TestBean(ZonedDateTime dateTime) {
this.dateTime = dateTime;
}
}
-}
\ No newline at end of file
+}
diff --git a/graylog2-server/src/test/java/org/graylog2/plugin/MessageSummaryTest.java b/graylog2-server/src/test/java/org/graylog2/plugin/MessageSummaryTest.java
index f0a2e8ebd464..8cd727a80c91 100644
--- a/graylog2-server/src/test/java/org/graylog2/plugin/MessageSummaryTest.java
+++ b/graylog2-server/src/test/java/org/graylog2/plugin/MessageSummaryTest.java
@@ -21,13 +21,13 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Sets;
+import org.graylog2.shared.bindings.providers.ObjectMapperProvider;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.Before;
import org.junit.Test;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
@@ -91,12 +91,12 @@ public void testGetFields() throws Exception {
@Test
public void testJSONSerialization() throws Exception {
- final ObjectMapper mapper = new ObjectMapper();
+ final ObjectMapper mapper = new ObjectMapperProvider().get();
final MapType valueType = mapper.getTypeFactory().constructMapType(HashMap.class, String.class, Object.class);
final Map map = mapper.readValue(mapper.writeValueAsBytes(messageSummary), valueType);
- assertEquals(Sets.newHashSet("id", "timestamp", "message", "index", "source", "streamIds", "fields"), map.keySet());
+ assertEquals(Sets.newHashSet("id", "timestamp", "message", "index", "source", "stream_ids", "fields"), map.keySet());
}
@Test
diff --git a/graylog2-server/src/test/java/org/graylog2/security/encryption/EncryptedValueTest.java b/graylog2-server/src/test/java/org/graylog2/security/encryption/EncryptedValueTest.java
index 543956131536..6227846fe69c 100644
--- a/graylog2-server/src/test/java/org/graylog2/security/encryption/EncryptedValueTest.java
+++ b/graylog2-server/src/test/java/org/graylog2/security/encryption/EncryptedValueTest.java
@@ -203,7 +203,7 @@ public static TestDTO create(@JsonProperty EncryptedValue passwordValue) {
}
@JsonCreator
- public static TestDTO create(@JsonProperty("id") String id, @JsonProperty("password_value") EncryptedValue passwordValue) {
+ public static TestDTO create(@JsonProperty("id") @Id String id, @JsonProperty("password_value") EncryptedValue passwordValue) {
return new AutoValue_EncryptedValueTest_TestDTO(id, passwordValue);
}
}
diff --git a/pom.xml b/pom.xml
index 9e48e12c67fb..8ee9afee05f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,7 +117,7 @@
2.1.12
6.1.2.Final
2.6.1
- 2.9.10.20200411
+ 2.13.4.20221013
0.14.0
0.9.0
1.3.2