Implied readability + layers

Alex Buckley alex.buckley at oracle.com
Fri Nov 6 00:39:47 UTC 2015


On 11/5/2015 2:02 PM, Ali Ebrahimi wrote:
> Hi,
>
> On Thu, Nov 5, 2015 at 10:14 PM, Alex Buckley <alex.buckley at oracle.com
> <mailto:alex.buckley at oracle.com>> wrote:
>
>     On 11/5/2015 1:30 AM, Ali Ebrahimi wrote:
>
>         Hi alan,
>         So far quite disappointing!
>
>         But I think Alex's last response on this topic says opposite of
>         this:
>
>         "We'll have to think about the implication of com.baz in layer1
>         sometimes
>         offering a 'requires public' on com.bar in layer1, and sometimes
>         offering a
>         'requires public' on com.bar in layer2, depending on who is
>         reading com.baz
>         in layer1."
>
>
>     Alan and I have discussed this. It's not possible for com.baz in
>     layer1 to "switch" which com.bar it depends on.
>
> I never said we do version switch for com.bar in com.baz in layer1
> depend on its consumer module.
> I just say we use com.bar at 1 for layer1's modules and com.bar at 2 for
> layer2's modules.

com.foo in layer2 requires com.baz in layer1, right? Yes.

com.baz in layer1 uses types from com.bar in layer1, and NOT from 
com.bar in layer2, right? Yes.

Therefore, com.foo uses types from com.bar in layer1 (as required by 
com.baz in layer1), right? Yes.

I don't know what it means to say "we use com.bar at 2 for layer2's 
modules". com.foo is in layer2, and you can make it read com.bar at 2 via 
reflection, but otherwise com.bar at 2 is not read by com.foo because 
com.baz doesn't know about it.

> You may say it is possible (not always) com.bar at 1 passed to layer2 and
> we what we can do.
> This is simple: Or transfer com.foo to layer1 or refactor that to 2
> module com.foobaz and com.foobar2 and transfer com.foobaz to layer1.

I can't follow the "simple" solution, sorry.

Alex



More information about the jigsaw-dev mailing list