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