diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java index 626cbfa21..34dcafaa1 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java @@ -19,6 +19,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationListener; import org.springframework.core.GenericTypeResolver; +import org.springframework.data.mongodb.core.query.SerializationUtils; /** * Base class to implement domain class specific {@link ApplicationListener}s. @@ -103,7 +104,7 @@ public abstract class AbstractMongoEventListener implements ApplicationListen public void onBeforeConvert(BeforeConvertEvent event) { if (LOG.isDebugEnabled()) { - LOG.debug("onBeforeConvert({})", event.getSource()); + LOG.debug("onBeforeConvert({})", SerializationUtils.serializeToJsonSafely(event.getSource())); } } @@ -116,7 +117,7 @@ public abstract class AbstractMongoEventListener implements ApplicationListen public void onBeforeSave(BeforeSaveEvent event) { if (LOG.isDebugEnabled()) { - LOG.debug("onBeforeSave({}, {})", event.getSource(), event.getDocument()); + LOG.debug("onBeforeSave({}, {})", SerializationUtils.serializeToJsonSafely(event.getSource()), SerializationUtils.serializeToJsonSafely(event.getDocument())); } } @@ -129,7 +130,7 @@ public abstract class AbstractMongoEventListener implements ApplicationListen public void onAfterSave(AfterSaveEvent event) { if (LOG.isDebugEnabled()) { - LOG.debug("onAfterSave({}, {})", event.getSource(), event.getDocument()); + LOG.debug("onAfterSave({}, {})", SerializationUtils.serializeToJsonSafely(event.getSource()), SerializationUtils.serializeToJsonSafely(event.getDocument())); } } @@ -142,7 +143,7 @@ public abstract class AbstractMongoEventListener implements ApplicationListen public void onAfterLoad(AfterLoadEvent event) { if (LOG.isDebugEnabled()) { - LOG.debug("onAfterLoad({})", event.getDocument()); + LOG.debug("onAfterLoad({})", SerializationUtils.serializeToJsonSafely(event.getDocument())); } } @@ -155,7 +156,7 @@ public abstract class AbstractMongoEventListener implements ApplicationListen public void onAfterConvert(AfterConvertEvent event) { if (LOG.isDebugEnabled()) { - LOG.debug("onAfterConvert({}, {})", event.getDocument(), event.getSource()); + LOG.debug("onAfterConvert({}, {})", SerializationUtils.serializeToJsonSafely(event.getDocument()), SerializationUtils.serializeToJsonSafely(event.getSource())); } } @@ -168,7 +169,7 @@ public abstract class AbstractMongoEventListener implements ApplicationListen public void onAfterDelete(AfterDeleteEvent event) { if (LOG.isDebugEnabled()) { - LOG.debug("onAfterDelete({})", event.getDocument()); + LOG.debug("onAfterDelete({})", SerializationUtils.serializeToJsonSafely(event.getDocument())); } } @@ -181,7 +182,7 @@ public abstract class AbstractMongoEventListener implements ApplicationListen public void onBeforeDelete(BeforeDeleteEvent event) { if (LOG.isDebugEnabled()) { - LOG.debug("onBeforeDelete({})", event.getDocument()); + LOG.debug("onBeforeDelete({})", SerializationUtils.serializeToJsonSafely(event.getDocument())); } } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListenerUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListenerUnitTests.java index f66592d6e..eec825bff 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListenerUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListenerUnitTests.java @@ -17,15 +17,18 @@ package org.springframework.data.mongodb.core.mapping.event; import static org.assertj.core.api.Assertions.*; +import java.time.Instant; + import org.bson.Document; import org.junit.jupiter.api.Test; - import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.data.mongodb.core.mapping.Account; import org.springframework.data.mongodb.repository.Contact; import org.springframework.data.mongodb.repository.Person; +import com.mongodb.BasicDBObject; + /** * Unit tests for {@link AbstractMongoEventListener}. * @@ -154,6 +157,14 @@ public class AbstractMongoEventListenerUnitTests { assertThat(listener.invokedOnBeforeDelete).isFalse(); } + @Test // GH-3968 + public void debugLogShouldNotFailMongoDBCodecError() { + + MongoMappingEvent event = new BeforeConvertEvent<>(new BasicDBObject("date", Instant.now()), "collection-1"); + UntypedEventListener listener = new UntypedEventListener(); + listener.onApplicationEvent(event); + } + class SamplePersonEventListener extends AbstractMongoEventListener { boolean invokedOnBeforeConvert; diff --git a/spring-data-mongodb/src/test/resources/logback.xml b/spring-data-mongodb/src/test/resources/logback.xml index a36841c97..64550c957 100644 --- a/spring-data-mongodb/src/test/resources/logback.xml +++ b/spring-data-mongodb/src/test/resources/logback.xml @@ -7,11 +7,16 @@ + + + + +