Implied readability + layers
alex.buckley at oracle.com
Fri Nov 6 00:39:47 UTC 2015
On 11/5/2015 2:02 PM, Ali Ebrahimi wrote:
> 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
> "We'll have to think about the implication of com.baz in layer1
> 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.
More information about the jigsaw-dev