So in a Commons centric fantasy, Log4j Nodes could be Commons Configuration
objects?

G

On Sun, Apr 3, 2022, 22:18 Ralph Goers <ralph.go...@dslextreme.com> wrote:

> If you look at Log4j, we parse the configuration and convert it to a Node
> hierarchy.
> Variable interpolation occurs as the Nodes are constructed.
>
> But again, Nothing says a Commons Plugins implementation has to work the
> same way.
>
> Ralph
>
> > On Apr 3, 2022, at 7:12 PM, Gary Gregory <garydgreg...@gmail.com> wrote:
> >
> > Nice thread :-)
> >
> > Where does the parsing of configuration files mix in such a stack?
> >
> > Where does variable interpolation come into play?
> >
> > Gary
> >
> > On Sun, Apr 3, 2022, 20:50 Ralph Goers <ralph.go...@dslextreme.com>
> wrote:
> >
> >> Matt J,
> >>
> >> I fully expect that if commons-plugins came into fruition it would bear
> a
> >> resemblance
> >> to the Log4j plugin system but there would be differences. For example,
> >> while Log4j
> >> integrates with Spring we don’t currently support having the logging
> >> configuration in
> >> application.yml. I also suspect it would an almost impossible
> abstraction
> >> to have the
> >> DI system be pluggable, but I could be wrong about that.
> >>
> >> Of the bulleted items you listed Log4j’s plugin system handles all of
> them
> >> except that
> >> it doesn’t deal with dependencies. Instead, if your plugin is running in
> >> an OSGi
> >> environment it would be expected that the dependent modules would be
> >> available as
> >> described by the manifest for the module the plugin is included in.
> >>
> >> The goals for the log4j-plugins are really pretty simple.
> >> * Allow applications to provide flexibility by exposing sets of
> pluggable
> >> component types.
> >> * Allow users to provide their own implementations of the pluggable
> >> components that
> >> are on an equal footing with the “standard” components.
> >>
> >> Just by way of example, Apache Flume allows pluggable components such as
> >> Sources,
> >> Sinks and Channels. Writing a new Sink is fairly straightforward. But it
> >> will not be on
> >> an equal footing with the Sinks provided by Flume. This is because there
> >> is code in
> >> Flume that provides an alias (such as “avro” for the AvroSink) so that
> the
> >> plugin class
> >> can be named without having to specify the fully qualified class name.
> >> Custom
> >> components must be configured using the FQCN.  The Log4j plugin system
> >> solves
> >> this by requiring every plugin to have a “name” which is then used as
> the
> >> mechanism
> >> to locate it from the configuration.
> >>
> >> Non-goals would be
> >> * It is meant to load plugins, not be a full DI system for every
> component.
> >> * It leverages standard class loading methodologies, not a new one. i.e.
> >> it works with
> >> the standard Java class path, module path, or OSGi.
> >>
> >> Ralph
> >>
> >>
> >>> On Apr 3, 2022, at 8:49 AM, Matt Juntunen <matt.a.juntu...@gmail.com>
> >> wrote:
> >>>
> >>> Hi Matt,
> >>>
> >>> This is quite timely since I've spent the past week researching
> >>> frameworks to modularize a monolithic application at my day job into
> >>> separate components/plugins. Everything I've looked at so far is
> >>> larger and more complicated than I need (e.g. OSGi, Spring, etc) so I
> >>> was seriously considering writing my own, perhaps based on select
> >>> components from the Plexus project [1]. I would be interested in this
> >>> project if it could do the following:
> >>> - provide a standardized plugin packaging format;
> >>> - provide standardized configuration mechanisms;
> >>> - handle plugin discovery and enumeration;
> >>> - handle service discovery, enumeration, and dependency injection;
> >>> - handle class loading and resolution of plugin dependencies (e.g. a
> >>> plugin that depends on a different version of commons-lang than
> >>> another plugin); and
> >>> - provide plugin lifecycle methods.
> >>>
> >>> It would also be great if the project was compatible with different
> >>> frameworks. For example, if the dependency injection functionality
> >>> could be swapped out for Spring if needed.
> >>>
> >>> I haven't totally completed my research so I'm not sure if there is
> >>> actually an existing framework out there that satisfies the above
> >>> requirements. If not, I would be willing to help out to get this
> >>> implemented, regardless of whether it ends up in commons or not.
> >>>
> >>> One more thought: I think it would be equally important (if not more
> >>> so) to define the non-goals of this potential project as the goals. Do
> >>> you have an idea of what those would be?
> >>>
> >>> Regards,
> >>> Matt J
> >>>
> >>> [1] https://codehaus-plexus.github.io/
> >>>
> >>> On Sun, Apr 3, 2022 at 6:24 AM Gary Gregory <garydgreg...@gmail.com>
> >> wrote:
> >>>>
> >>>> Should this be in Commons Configuration?
> >>>>
> >>>> Gary
> >>>>
> >>>> On Sat, Apr 2, 2022, 15:33 Matt Sicker <boa...@gmail.com> wrote:
> >>>>
> >>>>> Hi all, I’ve got a proposal for a new Commons component that I’d like
> >> to
> >>>>> get feedback on. Essentially, I’d like to propose the creation of a
> >> Commons
> >>>>> Plugins component inspired by the plugin system developed for Log4j
> 3.x
> >>>>> [0]. This library would be a lightweight dependency injection and
> >>>>> configuration library where developers create pluggable classes that
> >> can be
> >>>>> referenced through plugin names via the configuration file (or
> >>>>> configuration source in general). In contrast with more typical
> >> dependency
> >>>>> injection frameworks like Spring and Guice, this library is for
> >>>>> applications where pluggable implementations of things is desired.
> >>>>> Developing a plugin system on top of DI frameworks is not a very
> >>>>> standardized domain, and each project ends up reinventing this from
> >> scratch
> >>>>> over time.
> >>>>>
> >>>>> Some existing material on how the Log4j plugin and configuration
> system
> >>>>> works that I’d adapt from to form the basis for this component
> include:
> >>>>> -
> >>>>>
> >>
> https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/dependencyinjection.adoc
> >>>>> <
> >>>>>
> >>
> https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/dependencyinjection.adoc
> >>>>>>
> >>>>> -
> >>>>>
> >>
> https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/plugins.adoc
> >>>>> <
> >>>>>
> >>
> https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/plugins.adoc
> >>>>>>
> >>>>>
> >>>>> The general goal of this library is to make it so that applications
> can
> >>>>> provide better configuration DSLs for their plugin components. As
> both
> >> a
> >>>>> developer and user, I absolutely despise configuring complex
> >> applications
> >>>>> with properties files, and YAML variants of properties aren’t that
> much
> >>>>> better. If there was a common plugin library we could reuse, then
> >> perhaps
> >>>>> more applications would support a better configuration system. This
> >> could
> >>>>> also provide a nice place for tooling integration similar to how
> JUnit
> >> is
> >>>>> supported by IDEs and other tools.
> >>>>>
> >>>>> What do you think? Should this start in the Sandbox? Is anyone
> >> interested
> >>>>> in working on or using this?
> >>>>>
> >>>>> [0]:
> >> https://github.com/apache/logging-log4j2/tree/master/log4j-plugins <
> >>>>> https://github.com/apache/logging-log4j2/tree/master/log4j-plugins>
> >>>>>
> >>>>> —
> >>>>> Matt Sicker
> >>>>>
> >>>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> >>> For additional commands, e-mail: dev-h...@commons.apache.org
> >>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> >> For additional commands, e-mail: dev-h...@commons.apache.org
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to