> -----Original Message-----
> From: jigsaw-dev [mailto:[email protected]] On Behalf Of 
> Alan Bateman
> Sent: Thursday, November 05, 2015 4:51 PM
> To: Ali Ebrahimi <[email protected]>
> Cc: jigsaw-dev <[email protected]>
> Subject: Re: Implied readability + layers
> 
> 
> 
> On 04/11/2015 22:45, Ali Ebrahimi wrote:
> > :
> > So you say com.bar@2 does not override com.bar@1 in layer2 and types
> > will be loaded from com.bar@1 in layer2 for com.foo?
> The configuration for layer2 doesn't contain any modules that require com.bar.
> 
> If you expand the scenario to com.bax requires com.bar and if com.bax is in 
> configuration2 then you would have com.bax reads
> com.bar@2 in the readability graph (and layer2).
> 
> 
> > This is changed from yesterday?
> > I now get
> > bar1
> > bar1
> > instead of
> > bar1
> > bar2
> > for my yesterday sample code. quite supersizing!
> It will take time to shake out issues and it's great that you are trying 
> things and finding issues. At this time the only issue I'm aware of is
> where there are equal ModuleDescriptors in multiple layers. That one requires 
> an API change as I mentioned, we'll get that sorted out
> soon.
> 
> 
> >
> > Second, what can you say for this test case:
> >
> > :
> >
> >
> >      Module m1 = layer1.findModule("m1").get();
> >      Module m2_v1 = layer1.findModule("m2").get();
> >      Module m2_v2 = layer2.findModule("m2").get();
> >      Module m3 = layer2.findModule("m3").get();
> >
> >      assertTrue(m2_v2.getLayer() == layer2);
> >      assertFalse(m1.canRead(m2_v2));
> >      assertFalse(m2_v1.canRead(m2_v2));
> >      assertFalse(m2_v2.canRead(m2_v1));
> >      assertFalse(m3.canRead(m2_v2));
> In this example then m3 is the only module in layer2 and so
> layer2.findModule("m2") will find m2 in its parent (hence m2_v2 == m2_v1).
> 
> If you adjust the example so that m3 requires m2 then layer2 will contain m3 
> and m2@2.
> 
> It's also possible for m3 require both m1 and m2. The result may be a 
> surprising as m3 will read m2@1 and m2@2. Clearly if both
> versions of m2 were to export the same package then it would fail but there 
> are no exports in this test case.

Generally, m2@1 and m2@2 are different versions of a same component. So 
essentially a module M cannot read duplicate types/modules, except only use 
reflection to access, right?


> 
> -Alan.

Reply via email to