On 11/5/2015 2:02 PM, Ali Ebrahimi wrote:
Hi,

On Thu, Nov 5, 2015 at 10:14 PM, Alex Buckley <alex.buck...@oracle.com
<mailto:alex.buck...@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@1 for layer1's modules and com.bar@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@2 for layer2's modules". com.foo is in layer2, and you can make it read com.bar@2 via reflection, but otherwise com.bar@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@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

Reply via email to