From fac2e35f967a808b71c6710796af316d65149d04 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 24 Jul 2018 14:44:34 +0200 Subject: [PATCH] Refactor util.log.LogUtils into core.log.LogDelegateFactory Issue: SPR-17012 --- .../{util => core}/log/CompositeLog.java | 28 ++++++++++--------- .../log/LogDelegateFactory.java} | 18 +++++++++--- .../{util => core}/log/package-info.java | 4 +-- .../messaging/simp/SimpLogging.java | 6 ++-- .../org/springframework/http/HttpLogging.java | 6 ++-- .../AbstractListenerReadPublisher.java | 6 ++-- .../AbstractListenerWriteFlushProcessor.java | 6 ++-- .../AbstractListenerWriteProcessor.java | 6 ++-- .../server/reactive/WriteResultPublisher.java | 8 +++--- 9 files changed, 52 insertions(+), 36 deletions(-) rename spring-core/src/main/java/org/springframework/{util => core}/log/CompositeLog.java (84%) rename spring-core/src/main/java/org/springframework/{util/log/LogUtils.java => core/log/LogDelegateFactory.java} (83%) rename spring-core/src/main/java/org/springframework/{util => core}/log/package-info.java (57%) diff --git a/spring-core/src/main/java/org/springframework/util/log/CompositeLog.java b/spring-core/src/main/java/org/springframework/core/log/CompositeLog.java similarity index 84% rename from spring-core/src/main/java/org/springframework/util/log/CompositeLog.java rename to spring-core/src/main/java/org/springframework/core/log/CompositeLog.java index 25a1e875e5..9d46d28a95 100644 --- a/spring-core/src/main/java/org/springframework/util/log/CompositeLog.java +++ b/spring-core/src/main/java/org/springframework/core/log/CompositeLog.java @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.util.log; + +package org.springframework.core.log; import java.util.List; import java.util.function.Predicate; @@ -22,16 +23,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.impl.NoOpLog; /** - * Implementation of {@link Log} that wraps a list of loggers and delegates to - * the first one for which logging is enabled at the given level. + * Implementation of {@link Log} that wraps a list of loggers and delegates + * to the first one for which logging is enabled at the given level. * * @author Rossen Stoyanchev * @since 5.1 - * @see LogUtils#getCompositeLog + * @see LogDelegateFactory#getCompositeLog */ -class CompositeLog implements Log { +final class CompositeLog implements Log { - private static final Log noOpLog = new NoOpLog(); + private static final Log NO_OP_LOG = new NoOpLog(); private final Log fatalLogger; @@ -62,38 +63,38 @@ class CompositeLog implements Log { } private static Log initLogger(List loggers, Predicate predicate) { - return loggers.stream().filter(predicate).findFirst().orElse(noOpLog); + return loggers.stream().filter(predicate).findFirst().orElse(NO_OP_LOG); } @Override public boolean isFatalEnabled() { - return this.fatalLogger != noOpLog; + return this.fatalLogger != NO_OP_LOG; } @Override public boolean isErrorEnabled() { - return this.errorLogger != noOpLog; + return this.errorLogger != NO_OP_LOG; } @Override public boolean isWarnEnabled() { - return this.warnLogger != noOpLog; + return this.warnLogger != NO_OP_LOG; } @Override public boolean isInfoEnabled() { - return this.infoLogger != noOpLog; + return this.infoLogger != NO_OP_LOG; } @Override public boolean isDebugEnabled() { - return this.debugLogger != noOpLog; + return this.debugLogger != NO_OP_LOG; } @Override public boolean isTraceEnabled() { - return this.traceLogger != noOpLog; + return this.traceLogger != NO_OP_LOG; } @Override @@ -155,4 +156,5 @@ class CompositeLog implements Log { public void trace(Object message, Throwable ex) { this.traceLogger.trace(message, ex); } + } diff --git a/spring-core/src/main/java/org/springframework/util/log/LogUtils.java b/spring-core/src/main/java/org/springframework/core/log/LogDelegateFactory.java similarity index 83% rename from spring-core/src/main/java/org/springframework/util/log/LogUtils.java rename to spring-core/src/main/java/org/springframework/core/log/LogDelegateFactory.java index b4d98c5054..48ee61f11d 100644 --- a/spring-core/src/main/java/org/springframework/util/log/LogUtils.java +++ b/spring-core/src/main/java/org/springframework/core/log/LogDelegateFactory.java @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.util.log; + +package org.springframework.core.log; import java.util.ArrayList; import java.util.Collections; @@ -23,13 +24,22 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** - * Utilities to assist with logging. Mainly for internal use within the framework - * with Appache Commons Logging. + * Factory for common {@link Log} delegates with Spring's logging conventions. + * + *

Mainly for internal use within the framework with Apache Commons Logging, + * typically in the form of the {@code spring-jcl} bridge but also compatible + * with other Commons Logging bridges. * * @author Rossen Stoyanchev + * @author Juergen Hoeller * @since 5.1 + * @see org.apache.commons.logging.LogFactory */ -public abstract class LogUtils { +public final class LogDelegateFactory { + + private LogDelegateFactory() { + } + /** * Create a composite logger that delegates to a primary or falls back on a diff --git a/spring-core/src/main/java/org/springframework/util/log/package-info.java b/spring-core/src/main/java/org/springframework/core/log/package-info.java similarity index 57% rename from spring-core/src/main/java/org/springframework/util/log/package-info.java rename to spring-core/src/main/java/org/springframework/core/log/package-info.java index c476b253ad..b14fac177c 100644 --- a/spring-core/src/main/java/org/springframework/util/log/package-info.java +++ b/spring-core/src/main/java/org/springframework/core/log/package-info.java @@ -1,9 +1,9 @@ /** - * Useful helper classes for logging. + * Useful delegates for Spring's logging conventions. */ @NonNullApi @NonNullFields -package org.springframework.util.log; +package org.springframework.core.log; import org.springframework.lang.NonNullApi; import org.springframework.lang.NonNullFields; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpLogging.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpLogging.java index 17fd2b54e0..89d069d961 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpLogging.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpLogging.java @@ -13,12 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.messaging.simp; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.util.log.LogUtils; +import org.springframework.core.log.LogDelegateFactory; /** * Holds the shared logger named "org.springframework.web.SimpLogging" to use @@ -35,6 +36,7 @@ import org.springframework.util.log.LogUtils; * * @author Rossen Stoyanchev * @since 5.1 + * @see LogDelegateFactory */ public abstract class SimpLogging { @@ -62,7 +64,7 @@ public abstract class SimpLogging { * @return the resulting composite logger */ public static Log forLog(Log primaryLogger) { - return LogUtils.getCompositeLog(primaryLogger, fallbackLogger); + return LogDelegateFactory.getCompositeLog(primaryLogger, fallbackLogger); } } diff --git a/spring-web/src/main/java/org/springframework/http/HttpLogging.java b/spring-web/src/main/java/org/springframework/http/HttpLogging.java index d9e1339b61..ecb3c55e80 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpLogging.java +++ b/spring-web/src/main/java/org/springframework/http/HttpLogging.java @@ -13,12 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.http; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.util.log.LogUtils; +import org.springframework.core.log.LogDelegateFactory; /** * Holds the shared logger named "org.springframework.web.HttpLogging" for HTTP @@ -36,6 +37,7 @@ import org.springframework.util.log.LogUtils; * * @author Rossen Stoyanchev * @since 5.1 + * @see LogDelegateFactory */ public abstract class HttpLogging { @@ -63,7 +65,7 @@ public abstract class HttpLogging { * @return the resulting composite logger */ public static Log forLog(Log primaryLogger) { - return LogUtils.getCompositeLog(primaryLogger, fallbackLogger); + return LogDelegateFactory.getCompositeLog(primaryLogger, fallbackLogger); } } diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerReadPublisher.java b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerReadPublisher.java index 680b463ccc..c15ca7fdbb 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerReadPublisher.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerReadPublisher.java @@ -26,9 +26,9 @@ import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import reactor.core.publisher.Operators; +import org.springframework.core.log.LogDelegateFactory; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.log.LogUtils; /** * Abstract base class for {@code Publisher} implementations that bridge between @@ -49,12 +49,12 @@ public abstract class AbstractListenerReadPublisher implements Publisher { /** * Special logger for debugging Reactive Streams signals. - * @see LogUtils#getHiddenLog(Class) + * @see LogDelegateFactory#getHiddenLog(Class) * @see AbstractListenerWriteProcessor#rsWriteLogger * @see AbstractListenerWriteFlushProcessor#rsWriteFlushLogger * @see WriteResultPublisher#rsWriteResultLogger */ - protected static Log rsReadLogger = LogUtils.getHiddenLog(AbstractListenerReadPublisher.class); + protected static Log rsReadLogger = LogDelegateFactory.getHiddenLog(AbstractListenerReadPublisher.class); private final AtomicReference state = new AtomicReference<>(State.UNSUBSCRIBED); diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteFlushProcessor.java b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteFlushProcessor.java index ff6fe758bd..361db0a889 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteFlushProcessor.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteFlushProcessor.java @@ -25,9 +25,9 @@ import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; +import org.springframework.core.log.LogDelegateFactory; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.log.LogUtils; /** * An alternative to {@link AbstractListenerWriteProcessor} but instead writing @@ -44,12 +44,12 @@ public abstract class AbstractListenerWriteFlushProcessor implements Processo /** * Special logger for debugging Reactive Streams signals. - * @see LogUtils#getHiddenLog(Class) + * @see LogDelegateFactory#getHiddenLog(Class) * @see AbstractListenerReadPublisher#rsReadLogger * @see AbstractListenerWriteProcessor#rsWriteLogger * @see WriteResultPublisher#rsWriteResultLogger */ - protected static final Log rsWriteFlushLogger = LogUtils.getHiddenLog(AbstractListenerWriteFlushProcessor.class); + protected static final Log rsWriteFlushLogger = LogDelegateFactory.getHiddenLog(AbstractListenerWriteFlushProcessor.class); private final AtomicReference state = new AtomicReference<>(State.UNSUBSCRIBED); diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java index 0be854e468..9383ab8912 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java @@ -24,9 +24,9 @@ import org.reactivestreams.Processor; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; +import org.springframework.core.log.LogDelegateFactory; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.log.LogUtils; /** * Abstract base class for {@code Processor} implementations that bridge between @@ -46,12 +46,12 @@ public abstract class AbstractListenerWriteProcessor implements Processor state = new AtomicReference<>(State.UNSUBSCRIBED); diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java b/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java index cbfe6ff7c6..6edd9892c3 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,9 +24,9 @@ import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import reactor.core.publisher.Operators; +import org.springframework.core.log.LogDelegateFactory; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.log.LogUtils; /** * Publisher returned from {@link ServerHttpResponse#writeWith(Publisher)}. @@ -40,12 +40,12 @@ class WriteResultPublisher implements Publisher { /** * Special logger for debugging Reactive Streams signals. - * @see LogUtils#getHiddenLog(Class) + * @see LogDelegateFactory#getHiddenLog(Class) * @see AbstractListenerReadPublisher#rsReadLogger * @see AbstractListenerWriteProcessor#rsWriteLogger * @see AbstractListenerWriteFlushProcessor#rsWriteFlushLogger */ - private static final Log rsWriteResultLogger = LogUtils.getHiddenLog(WriteResultPublisher.class); + private static final Log rsWriteResultLogger = LogDelegateFactory.getHiddenLog(WriteResultPublisher.class); private final AtomicReference state = new AtomicReference<>(State.UNSUBSCRIBED);