Matt,

I absolutely would have preferred that you had created a PR for this and asked 
for a review before committing it as I have a few concerns:

1. It is a massive commit. It is going to take time to digest exactly what you 
have done.
2. You have created a util3 package in API with no discussion of this on the 
dev list. I assume that it contains artifacts that were cleaned up from util 
and are now no longer compatible? Or does it only contain classes that are 
exportable to other Log4j artifacts (I do see that in module-info.java). If 
these classes are meant to be private then I would have preferred that it be 
moved to internal/util. 
3. I no longer understand the point of Lazy<>. LogManager now performs no 
static initialization that I can see. Instead, it calls 
LoggingSystem.getInstance(). What is the point of making initialization of 
INSTANCE lazy? You accomplished what you wanted to by moving the static 
initialization to another class.
4-10. I have no idea as it will take me a week to muddle through the rest of 
all these changes to figure out what happened.

Ralph

> On Oct 30, 2022, at 6:24 PM, mattsic...@apache.org wrote:
> 
> This is an automated email from the ASF dual-hosted git repository.
> 
> mattsicker pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
> 
> 
> The following commit(s) were added to refs/heads/master by this push:
>     new aab23d5c05 [LOG4J2-3459] - Add LoggingSystemProvider SPI
> aab23d5c05 is described below
> 
> commit aab23d5c05bff2915c290dff3e73a0ae03caf43a
> Author: Matt Sicker <mattsic...@apache.org>
> AuthorDate: Sun Oct 30 20:24:17 2022 -0500
> 
>    [LOG4J2-3459] - Add LoggingSystemProvider SPI
> 
>    This helps clean up a lot of static state in Log4j API along with enabling 
> further extensibility by exposing LoggingSystemProvider::getInstance which 
> can be implemented using Injector in Log4j Core. The general utility class 
> for working with this provider is available as an internal (util3) class in 
> LoggingSystem. Test fixture helper classes have also been updated to use 
> LoggingSystem directly.
> 
>    Signed-off-by: Matt Sicker <mattsic...@apache.org>
> ---
> .../junit/LogManagerLoggerContextFactoryRule.java  |  11 +-
> .../test/junit/LoggerContextFactoryExtension.java  |  12 +-
> .../{TestProvider.java => TestSystemProvider.java} |  23 +-
> .../log4j/spi/DefaultThreadContextMapTest.java     |  10 +-
> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
> .../services/org.apache.logging.log4j.spi.Provider |   1 -
> log4j-api/src/main/java/module-info.java           |   5 +-
> .../java/org/apache/logging/log4j/LogManager.java  |  76 +------
> .../org/apache/logging/log4j/ThreadContext.java    | 133 +++++------
> .../org/apache/logging/log4j/internal/Binding.java |  32 ++-
> .../apache/logging/log4j/internal/BindingMap.java  |  59 +++++
> .../log4j/simple/SimpleLoggingSystemProvider.java  |  24 +-
> .../log4j/spi/AbstractLoggingSystemProvider.java   |  60 +++++
> .../CopyOnWriteSortedArrayThreadContextMap.java    |  68 ++----
> .../log4j/spi/DefaultContextMapFactory.java        | 102 +++++++++
> .../log4j/spi/DefaultContextStackFactory.java      |  50 ++++
> .../logging/log4j/spi/DefaultThreadContextMap.java |  36 +--
> .../GarbageFreeSortedArrayThreadContextMap.java    |  51 ++---
> .../log4j/spi/LegacyLoggingSystemProvider.java     | 125 ++++++++++
> .../logging/log4j/spi/LoggingSystemProvider.java   |  82 +++++++
> .../org/apache/logging/log4j/spi/Provider.java     | 253 ---------------------
> .../logging/log4j/spi/ThreadContextMapFactory.java | 134 -----------
> .../org/apache/logging/log4j/util/LazyInt.java     |  52 -----
> .../org/apache/logging/log4j/util3/Activator.java  |  57 +++--
> .../org/apache/logging/log4j/util3/Constants.java  |  43 ++--
> .../apache/logging/log4j/util3/LoggingSystem.java  | 223 ++++++++++++++++++
> .../apache/logging/log4j/util3/PropertiesUtil.java |  31 +--
> .../apache/logging/log4j/util3/ProviderUtil.java   | 143 ------------
> .../core/test/junit/ContextSelectorCallback.java   |   9 +-
> .../core/test/junit/LoggerContextResolver.java     |  10 +-
> .../log4j/core/test/junit/LoggerContextRule.java   |   5 +-
> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
> .../services/org.apache.logging.log4j.spi.Provider |   1 -
> log4j-core/src/main/java/module-info.java          |   7 +-
> .../log4j/core/impl/Log4jSystemProvider.java       |  75 ++++++
> .../apache/logging/log4j/core/osgi/Activator.java  |   4 +-
> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
> .../services/org.apache.logging.log4j.spi.Provider |   1 -
> .../CopyOnWriteOpenHashMapThreadContextMap.java    |   3 +-
> .../GarbageFreeOpenHashMapThreadContextMap.java    |   3 +-
> log4j-to-jul/src/main/java/module-info.java        |   7 +-
> .../{JULProvider.java => JULSystemProvider.java}   |  24 +-
> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
> .../services/org.apache.logging.log4j.spi.Provider |  18 --
> .../org/apache/logging/slf4j/MDCContextMap.java    |  19 +-
> .../apache/logging/slf4j/SLF4JSystemProvider.java  |  30 ++-
> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
> .../services/org.apache.logging.log4j.spi.Provider |   1 -
> src/changes/changes.xml                            |   3 +
> src/site/asciidoc/manual/extending.adoc            |  20 +-
> src/site/asciidoc/runtime-dependencies.adoc        |   4 +-
> 51 files changed, 1202 insertions(+), 1023 deletions(-)

Reply via email to