> On Jun 9, 2016, at 8:52 AM, Chris Hegarty <[email protected]> wrote:
> 
>> 
>> On 9 Jun 2016, at 11:16, Alan Bateman <[email protected]> wrote:
>> 
>> On 08/06/2016 20:45, Jim Laskey (Oracle) wrote:
>> 
>>> Consistent use of PathPatterns for jlink, jimage and jmod options.
>>> 
>>> —optionName=(regex:|glob:|<nil>)<pattern> ?? where <nil><pattern> => 
>>> glob:<pattern>
>>> 
>>> http://cr.openjdk.java.net/~jlaskey/8158402/webrev/index.html 
>>> <http://cr.openjdk.java.net/~jlaskey/8158402/webrev/index.html>
>>> https://bugs.openjdk.java.net/browse/JDK-8158402 
>>> <https://bugs.openjdk.java.net/browse/JDK-8158402>
>>> 
>> This look okay to me but two questions:
>> 
>> 1. Do any of the usage resources need to be updated?
>> 
>> 2. Does this introduce an inconsistency in the jmod tool in that 
>> --hash-modules takes a regex whereas --exclude takes a pattern that is a 
>> glob (at least by default, it could be a regex too if prefixed with 
>> "regex:").
> 
> As things currently stand --hash-modules accepts a regex, and --exclude 
> accepts a glob. So this change does not affect default behaviour.
> 
> It makes sense for --exclude to take a glob ( and optionally a regex ).
> I don’t think it makes sense for --hash-modules to take anything other
> than a regex.
> 
> Are there issues with this?
> 
> Jim,   can you please rename GlobConverter to PatternConverter or 
> ExcludeConverter,
> or similar.

diff -r 766e969fc3e0 src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java
--- a/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java  Thu Jun 09 
07:55:38 2016 -0300
+++ b/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java  Thu Jun 09 
08:56:46 2016 -0300
@@ -1072,6 +1072,10 @@
         @Override
         public Pattern convert(String value) {
             try {
+                if (value.startsWith("regex:")) {
+                    value = value.substring("regex:".length()).trim();
+                }
+                
                 return Pattern.compile(value);
             } catch (PatternSyntaxException e) {
                 throw new CommandException("err.bad.pattern", value);
@@ -1083,7 +1087,7 @@
         @Override public String valuePattern() { return "pattern"; }
     }
 
-    static class GlobConverter implements ValueConverter<PathMatcher> {
+    static class PathMatcherConverter implements ValueConverter<PathMatcher> {
         @Override
         public PathMatcher convert(String pattern) {
             try {
@@ -1199,7 +1203,7 @@
         OptionSpec<PathMatcher> excludes
                 = parser.accepts("exclude", getMessage("main.opt.exclude"))
                         .withRequiredArg()
-                        .withValuesConvertedBy(new GlobConverter());
+                        .withValuesConvertedBy(new PathMatcherConverter());
 
         OptionSpec<Pattern> hashModules
                 = parser.accepts("hash-modules", 
getMessage("main.opt.hash-modules"))

> 
> -Chris.

Reply via email to