Hi Stuart,

    thanks for the comments.

On 2016/5/21 7:52, Stuart Marks wrote:
On 5/16/16 1:18 AM, Felix Yang wrote:
please review the updated webrev, which remove not-suggested filesystem
modification and codebase stuff:

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

Hi Felix,

OK, this is looking much better and simpler. The big improvement is, as we had discussed, the creation of a common fixture for the tests. The tests then use the same fixture in different ways to exercise the different cases. This makes this more easily extensible to additional cases.
...

It's up to you whether you want to accept my changes and continue from this point, or go in a different direction, but to my eye this is cleaner and easier to follow.
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.

Thanks,
Felix

* * *

Now, finally, on to more substantive review issues. :-)

One thing that seemed to be missing was that the application itself wasn't wrapped up into a jar file. I've added another Jar command that does this.

Now we have the client, server, and app as separate hierarchies under the "exploded" directory, and as modules under the "mods" directory.

I think the idea of having the "exploded" class hierarchy as well as jar files useful as modules is a good one. This will let you add cases, where different components are on the classpath or are loaded as modules, in addition to the two already present here.

One issue here is that there's a module-info class for the app. This makes the app an actual named module (I think) as opposed to an automatic module like the client and server jar files. It seems like it would be preferable to be consistent and have them all be automatic modules.

Given this arrangement, it should be pretty easy to have tests for any of the combinations we want of classpath vs modules. I guess there are 8 combinations: three components, each of which can be on the classpath or as a module. It's not clear to me that we need all 8 combinations. It's probably sufficient to have a reasonable subset.
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/

Thanks,
Felix

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

-Felix

In any case, for this initial changeset, I think it's sufficient to test a few combinations of automatic modules vs. classpath. We can extend the cases to include named modules later. Please make a recommendation for some set of combinations and implement it, and then send it out for a final round of review.


Thanks.

s'marks

Reply via email to