I've updated https://issues.apache.org/jira/browse/LOG4J2-2803 with a
better overview of the existing systems, the idea behind the new
system, and some other details. I have some written notes about the
state of the mean-bean-machine branch relating to what's left to
integrate which is essentially the following:

* Format for bean metadata
* Strategy for loading bean metadata
* Annotation processor for generating bean metadata
* Implementing a configuration scope
* Transforming plugin attribute names into generated qualifier names
based on configuration node location
* Lazy initialization of required beans
* Determine if and how bean managers should communicate (i.e., one
bean manager per LoggerContext, or one per LoggerContextFactory?)
* Refactor plugins to use new API

On Sat, 29 May 2021 at 20:58, Ralph Goers <ralph.go...@dslextreme.com> wrote:
>
> While you could write the ServiceLoader class by hand, I wouldn’t want anyone 
> to.
> That would be error prone.
>
> I have though about creating a Maven plugin to generate the class, but all 
> that
> would do is replace the proc=only compile step, so there isn’t much point.
>
> Ralph
>
> > On May 29, 2021, at 5:40 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> >
> > We do need better docs on this. 3.0 is going to be a mixed bag. It will be 
> > easier
> > for “normal” applications because plugins now use ServiceLoader instead of
> > the Log4jPlugins.dat file. However, it is going to be more challenging for 
> > those
> > developing plugins if they use the Java Platform Module System.
> >
> > As one might imagine, the compiler now has a modulePath in addition to a
> > classPath. When no module-info.java is present Maven will set things up to
> > only use the classPath, which will work as normal. However, when a 
> > module-info.java
> > file is present than Maven will configure the project and its tests to use 
> > the
> > modulePath. By itself this isn’t a problem. However, the Java compiler ONLY
> > looks for Annotation processors automatically on the classPath. This means
> > anyone using JPMS while compiling plugins will have to explicitly configure
> > the annotation processor.
> >
> > There is a second issue when using JPMS. While our annotation processor
> > generates the service class and service definition file, JPMS requires that 
> > the
> > Log4jPlugins service class must be declared in module-info.java. This is
> > somewhat of a problem because the compiler will fail if it finds the
> > module-info.java references the Log4jPlugins service class because the
> > annotation processor hasn’t generated it yet.
> >
> > The only recourse to this is to do a proc=only compile that does not include
> > the module-info.java class followed by a full compile with proc=none. 
> > Personally,
> > I think this is a but in javac but I suspect it would be a major change to 
> > fix it.
> >
> > I have meant to write a blog post on all of this basically to ask the 
> > question,
> > “Is JPMS really worth it”?
> >
> > Ralph
> >
> >> On May 29, 2021, at 11:06 AM, Matt Sicker <boa...@gmail.com> wrote:
> >>
> >> Hey all, that itch is back to figure out how to complete my previous
> >> attempt at the plugin system updates (started a little over a year ago
> >> and put on pause at some point). I'm currently working on getting that
> >> branch back up to working again with master (mostly needing to update
> >> module-info files), and I'm hoping to map out and figure out the path
> >> forward on completing it.
> >>
> >> With that being said, one major aspect of this project will be
> >> explaining how the 2.x plugin system works, how it relates to the 3.x
> >> system, and the gist of how I'd like to restructure things. Does
> >> anyone here have any preferences on how I share some docs about this?
> >> I could record some videos that go over code and such, or I could
> >> write things up blog style. Note that these docs would be focused at
> >> fellow log4j developers and not necessarily the user manual. I still
> >> plan to have proper API docs and manual pages for the system, but
> >> those would be targeted for users writing their own extensions mainly.
> >>
> >> Link for background info:
> >> https://issues.apache.org/jira/browse/LOG4J2-2803
> >>
> >
> >
> >
>
>

Reply via email to