From 6ab77cfe41d986d25901f1bae7e324c79d054381 Mon Sep 17 00:00:00 2001 From: Jan Bernitt Date: Tue, 28 Jan 2025 17:10:06 +0100 Subject: [PATCH] chore: prevent null message logging + log cleanup [DHIS2-17998] --- .../system/notification/DefaultNotifier.java | 13 ++- .../notification/NotificationLoggerUtil.java | 56 ----------- .../NotificationLoggerUtilTest.java | 92 ------------------- 3 files changed, 12 insertions(+), 149 deletions(-) delete mode 100644 dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/NotificationLoggerUtil.java delete mode 100644 dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/notification/NotificationLoggerUtilTest.java diff --git a/dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/DefaultNotifier.java b/dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/DefaultNotifier.java index b022a062b6cc..92fab780bda3 100644 --- a/dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/DefaultNotifier.java +++ b/dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/DefaultNotifier.java @@ -160,7 +160,18 @@ private void asyncPushToStore(UID job, Notification n) { } } list.add(n); - NotificationLoggerUtil.log(log, n.getLevel(), n.getMessage()); + logNotificationAdded(n); + } + + private static void logNotificationAdded(Notification n) { + String message = n.getMessage(); + if (message == null || message.isEmpty()) return; + switch (n.getLevel()) { + case LOOP, DEBUG -> log.debug(message); + case INFO -> log.info(message); + case WARN -> log.warn(message); + case ERROR -> log.error(message); + } } private void asyncAutomaticCleanup() { diff --git a/dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/NotificationLoggerUtil.java b/dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/NotificationLoggerUtil.java deleted file mode 100644 index 1419fe23c581..000000000000 --- a/dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/notification/NotificationLoggerUtil.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2004-2022, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.system.notification; - -import javax.annotation.Nonnull; -import org.slf4j.Logger; - -/** - * @author Luca Cambi - */ -public class NotificationLoggerUtil { - public static void log(Logger logger, @Nonnull NotificationLevel level, String message) { - switch (level) { - case LOOP: - case DEBUG: - logger.debug(message); - break; - case INFO: - logger.info(message); - break; - case WARN: - logger.warn(message); - break; - case ERROR: - logger.error(message); - break; - case OFF: - break; - } - } -} diff --git a/dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/notification/NotificationLoggerUtilTest.java b/dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/notification/NotificationLoggerUtilTest.java deleted file mode 100644 index 9ac4d89e1555..000000000000 --- a/dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/notification/NotificationLoggerUtilTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2004-2022, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.system.notification; - -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import org.slf4j.Logger; - -/** - * @author Luca Cambi - */ -@ExtendWith(MockitoExtension.class) -class NotificationLoggerUtilTest { - - @Mock Logger logger; - - private static String logMessage = "logMessage"; - - @Test - void shouldLogDebugLevel() { - - NotificationLoggerUtil.log(logger, NotificationLevel.DEBUG, logMessage); - - verify(logger).debug(logMessage); - verify(logger, times(0)).info(logMessage); - verify(logger, times(0)).warn(logMessage); - verify(logger, times(0)).error(logMessage); - } - - @Test - void shouldLogInfoLevel() { - - NotificationLoggerUtil.log(logger, NotificationLevel.INFO, logMessage); - - verify(logger, times(0)).debug(logMessage); - verify(logger).info(logMessage); - verify(logger, times(0)).warn(logMessage); - verify(logger, times(0)).error(logMessage); - } - - @Test - void shouldLogWarnLevel() { - - NotificationLoggerUtil.log(logger, NotificationLevel.WARN, logMessage); - - verify(logger, times(0)).debug(logMessage); - verify(logger, times(0)).info(logMessage); - verify(logger).warn(logMessage); - verify(logger, times(0)).error(logMessage); - } - - @Test - void shouldLogErrorLevel() { - - NotificationLoggerUtil.log(logger, NotificationLevel.ERROR, logMessage); - - verify(logger, times(0)).debug(logMessage); - verify(logger, times(0)).info(logMessage); - verify(logger, times(0)).warn(logMessage); - verify(logger).error(logMessage); - } -}