diff --git a/graylog2-server/pom.xml b/graylog2-server/pom.xml index 73d829d81e6d3..8c2abaa392735 100644 --- a/graylog2-server/pom.xml +++ b/graylog2-server/pom.xml @@ -181,8 +181,8 @@ com.fasterxml.jackson.module - jackson-module-scala_2.13 - 2.9.10 + jackson-module-scala_3 + 2.13.4 com.fasterxml.jackson.jaxrs 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 9b3c88e92f3ba..a97d83b11d8c3 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 d244e582fb59a..3991ff28dfe41 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()); @@ -114,6 +115,7 @@ public ObjectMapperProvider(@GraylogClassLoader final ClassLoader classLoader, .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 aa99f2c324b2b..3c3ff47cf65e9 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 197762c4eeaea..f0c0ca7c2392d 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/graylog/plugins/views/migrations/V20200204122000_MigrateUntypedViewsToDashboardsTest.java b/graylog2-server/src/test/java/org/graylog/plugins/views/migrations/V20200204122000_MigrateUntypedViewsToDashboardsTest.java index b14aff42d7ad6..a832627783da3 100644 --- a/graylog2-server/src/test/java/org/graylog/plugins/views/migrations/V20200204122000_MigrateUntypedViewsToDashboardsTest.java +++ b/graylog2-server/src/test/java/org/graylog/plugins/views/migrations/V20200204122000_MigrateUntypedViewsToDashboardsTest.java @@ -18,6 +18,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.util.StdDateFormat; import com.mongodb.BasicDBObject; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -73,7 +74,8 @@ public class V20200204122000_MigrateUntypedViewsToDashboardsTest { @Mock private ClusterConfigService clusterConfigService; - private final ObjectMapper objectMapper = new ObjectMapperProvider().get(); + private final ObjectMapper objectMapper = new ObjectMapperProvider().get() + .setDateFormat(new StdDateFormat().withColonInTimeZone(false)); private Migration migration; private MongoCollection viewsCollection; 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 107b871fbc6f5..a1f3b17e3b97e 100644 --- a/graylog2-server/src/test/java/org/graylog2/jackson/MongoJodaDateTimeSerializerTest.java +++ b/graylog2-server/src/test/java/org/graylog2/jackson/MongoJodaDateTimeSerializerTest.java @@ -18,6 +18,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.util.StdDateFormat; import org.graylog2.shared.bindings.providers.ObjectMapperProvider; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; @@ -26,7 +27,8 @@ import static org.assertj.core.api.Assertions.assertThat; public class MongoJodaDateTimeSerializerTest { - private final ObjectMapper objectMapper = new ObjectMapperProvider().get(); + private final ObjectMapper objectMapper = new ObjectMapperProvider().get() + .setDateFormat(new StdDateFormat().withColonInTimeZone(false)); @Test public void serializeZonedDateTime() throws Exception { @@ -54,4 +56,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 69d0c55c8f88d..607f61549f6d2 100644 --- a/graylog2-server/src/test/java/org/graylog2/jackson/MongoZonedDateTimeSerializerTest.java +++ b/graylog2-server/src/test/java/org/graylog2/jackson/MongoZonedDateTimeSerializerTest.java @@ -18,6 +18,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.util.StdDateFormat; import org.graylog2.shared.bindings.providers.ObjectMapperProvider; import org.junit.Test; @@ -27,7 +28,8 @@ import static org.assertj.core.api.Assertions.assertThat; public class MongoZonedDateTimeSerializerTest { - private final ObjectMapper objectMapper = new ObjectMapperProvider().get(); + private final ObjectMapper objectMapper = new ObjectMapperProvider().get() + .setDateFormat(new StdDateFormat().withColonInTimeZone(false)); @Test public void serializeZonedDateTime() throws Exception { @@ -55,4 +57,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 f0a2e8ebd464b..6ed59e3ffed13 100644 --- a/graylog2-server/src/test/java/org/graylog2/plugin/MessageSummaryTest.java +++ b/graylog2-server/src/test/java/org/graylog2/plugin/MessageSummaryTest.java @@ -18,6 +18,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.MapType; +import com.fasterxml.jackson.datatype.joda.JodaModule; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; @@ -27,7 +28,6 @@ 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,7 +91,7 @@ public void testGetFields() throws Exception { @Test public void testJSONSerialization() throws Exception { - final ObjectMapper mapper = new ObjectMapper(); + final ObjectMapper mapper = new ObjectMapper().registerModule(new JodaModule()); final MapType valueType = mapper.getTypeFactory().constructMapType(HashMap.class, String.class, Object.class); final Map map = mapper.readValue(mapper.writeValueAsBytes(messageSummary), valueType); diff --git a/pom.xml b/pom.xml index 26055dc4358f8..15d9ac80b09f2 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 0.13.0 0.9.0 1.3.2