Implied readability + layers
Alan Bateman
Alan.Bateman at oracle.com
Fri Nov 6 20:12:04 UTC 2015
On 06/11/2015 19:18, Ali Ebrahimi wrote:
>
> This is my bad, I emitted requires public when typing mail.
> The is correct version:
>
> module com.baz{
> requires public com.baz;
> exports com.bar;
> }
>
> Stil result is:
>
> foo.canRead(bar2) -> true
> foo.canRead(bar1) -> false
> baz.canRead(bar1) -> true
> baz.canRead(bar2) -> false
> bar1
> bar2
>
>
> But:
> I figure out what is problem here:
> If you try this sample once with exploded modules and then with
> modular jars you will found.
Right, I think you are running into issue again where the two versions
of com.bar have equal ModuleDescriptors. When you create modular JAR
then I'm guessing you add a module version and this makes them non-equal.
For the exploded module case then you could changing one of them to
"export com.bar.extra" to make them non-equal. This is just temporary
until we get the API changed as I mentioned in some of the other mails.
>
> Also, if you remove com.bar from root module list for cfg2 final
> result will change:
>
> Configuration cfg2 = Configuration
> .resolve(finder2, layer1,ModuleFinder.empty(),"com.foo")
> .bind();
>
> So all of this can not cause hard to find bugs in user applications.
>
Yes, nobody requires com.bar in the configuration for layer2 and so
com.bar at 2 is ignored.
-Alan
More information about the jigsaw-dev
mailing list