On 10/01/2024 10:29, PavelTurk wrote:
:

Still can't get reference to read modules:

        layerC.configuration().modules().stream().forEach((m) -> {
            for (ResolvedModule r : m.reads()) {
                //LINE X
            }
        });

At LINE X I need to get `Module` from `ResolvedModule` to use Module.getLayer() method. How to do it?

Starting in model world (Configuration/ResolvedModule) is right and you first need to find the Configuration containing the moduleX that moduleY reads, this should do it:

        Configuration cf = layerC.configuration()
                .findModule("moduleY")
                .orElseThrow()
                .reads().stream()
                .filter(m -> m.name().equals("moduleX"))
                .map(ResolvedModule::configuration)
                .findAny()
                .orElseThrow();

Once you have the Configuration then you need to find the ModuleLayer that was reifed from that Configuration, this should do it:

        ModuleLayer layer = layerC.parents().stream()
                .filter(l -> l.configuration() == cf)
                .findAny()
                .orElseThrow();

Can you try it?

-Alan


Reply via email to