In that case you'd expose the factories through the services mechanism 
(`provides com.acme.api.MyWidgetFactory with 
com.acme.factories.XmlBasedWidgetFactory` in the module descriptor). Or, if you 
must expose the XML itself to the outside world rather than the factories, you 
can create a service that offers the XML as String or InputStream. Each module 
then has an implementation reading its own encapsulated XML. The former 
approach is preferable IMO.

Note that you can also use the services mechanism without module descriptors by 
placing text files in META-INF/services 
(https://docs.oracle.com/javase/tutorial/ext/basics/spi.html). However, if your 
code isn't a reusable library itself, you can also choose to modularize your 
own code and depend on non-modularized dependencies through their automatic 
module name 
(http://branchandbound.net/blog/java/2017/12/automatic-module-name/).

Sander

On 14 Jul 2018, at 17:58, Michał Zegan 
<webczat_...@poczta.onet.pl<mailto:webczat_...@poczta.onet.pl>> wrote:

It is a completely new code. It is not modularized for now because some
dependencies are not modularized, but I want it to be compatible to ease
later modularization.
My actual goal is to load xml files defining and configuring some
factories, from all modules that contain them. Not sure how would you do
that with services?

W dniu 14.07.2018 o 17:53, Alan Bateman pisze:
On 14/07/2018 16:38, Michał Zegan wrote:
What is then a recommendation for searching for all resources with name
x that i can access? Something like load all configuration including
some kind of extensions. I cannot list resources easily.

Services is the cleaner way to do this kind of thing, esp. if you have
flexibility to change the code and move away from legacy ClassLoader
getResources.

-Alan


Reply via email to