Hi Felix,

This is looking quite nice.

One small cleanup. Client.java has a constructor Client(int port), and an int port field. Both are unused and can be removed.

I accept your changes. 'pathJoin' looks cool. Though, I personally prefer to
work with Path rather than strings (fileJoin). Any way, both ways are OK for me.

If you'd like to switch to using Path, that's fine with me. Jon G has also expressed such a preference. It should be a fairly straightforward change. The fileJoin() utility can be removed, and pathJoin() can be replaced with the alternative version from my previous mail. Otherwise it's mostly a matter of removing calls to Paths.get() and adding calls to toString() in the right places.

OK, I updated the test to a pure automatic modules version. Following subset is
selected. Please suggest:
1. all in automatic modules
2. only dummy app as automatic module, and others are in classpath
3. client/server as automatic module, and dummy app is in classpath
4. server/app as automatic module, and client is in classpath

Updated webrev:
     http://cr.openjdk.java.net/~xiaofeya/8078812/webrev.03/

I think this is a fine subset. The different test cases are all quite simple and they're all straightforward variations of each other, and they all use the same test fixture!

An idea for possible future expansion is to mix automatic modules with named
modules. I'm not entirely sure how to do that. Perhaps one way is to have
module-info files for all the components, and then create variant jar files
with the module-info.class omitted. That way we'd have a modular jar, and then
a "plain" jar (without module-info.class) that'd be suitable for use as an
automatic module or to be put on the classpath. That'd be 3^3=27 combinations,
which I certainly think is overkill.
How about try this in later expansion?
All declared as named modules
Compile to exploded dir as usual
Enhance the JarUtil to accept a filter to exclude any file during creating jars
(in this case, module-info.class)
Then expand the test by specifying mp/cp with automatic modules, explored named
modules

Yes, this would be fine for future work. The exclusion of module-info.class from jar file creation seems like a reasonable approach.

If you eventually end up adding more test cases, it will probably result in a lot of redundancy in the way the sub-JVM is invoked. Also, the way to specify whether a particular component is in an unnamed module, an automatic module, or a named module will be somewhat cumbersome, so you'll probably want helper methods for that. And maybe you'd end up with a data provider to drive the test cases, instead of writing out individual test methods.

But all of this can be future work.

* * *

In summary, I think there is only the Client.java cleanup, and (optionally) the String=>Path conversion.

Did you need me to push this for you? This will go into jdk9/dev, right? I don't think it needs to go into jake.

s'marks

Reply via email to