langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/BaseFileManager.java
changeset 40308 274367a99f98
parent 39362 5ac5af2acb57
child 41155 93dad90c22c1
equal deleted inserted replaced
40306:1a0fcaf3f2ed 40308:274367a99f98
   230     @Override @DefinedBy(Api.COMPILER)
   230     @Override @DefinedBy(Api.COMPILER)
   231     public boolean handleOption(String current, Iterator<String> remaining) {
   231     public boolean handleOption(String current, Iterator<String> remaining) {
   232         OptionHelper helper = new GrumpyHelper(log) {
   232         OptionHelper helper = new GrumpyHelper(log) {
   233             @Override
   233             @Override
   234             public String get(Option option) {
   234             public String get(Option option) {
   235                 return options.get(option.getText());
   235                 return options.get(option);
   236             }
   236             }
   237 
   237 
   238             @Override
   238             @Override
   239             public void put(String name, String value) {
   239             public void put(String name, String value) {
   240                 options.put(name, value);
   240                 options.put(name, value);
   249             public boolean handleFileManagerOption(Option option, String value) {
   249             public boolean handleFileManagerOption(Option option, String value) {
   250                 return handleOption(option, value);
   250                 return handleOption(option, value);
   251             }
   251             }
   252         };
   252         };
   253 
   253 
   254         for (Option o: javacFileManagerOptions) {
   254         Option o = Option.lookup(current, javacFileManagerOptions);
   255             if (o.matches(current))  {
   255         if (o == null) {
   256                 if (o.hasArg()) {
   256             return false;
   257                     if (remaining.hasNext()) {
   257         }
   258                         if (!o.process(helper, current, remaining.next()))
   258 
   259                             return true;
   259         if (!o.handleOption(helper, current, remaining))
   260                     }
   260             throw new IllegalArgumentException(current);
   261                 } else {
   261 
   262                     if (!o.process(helper, current))
   262         return true;
   263                         return true;
       
   264                 }
       
   265                 // operand missing, or process returned true
       
   266                 throw new IllegalArgumentException(current);
       
   267             }
       
   268         }
       
   269 
       
   270         return false;
       
   271     }
   263     }
   272     // where
   264     // where
   273         private static final Set<Option> javacFileManagerOptions =
   265         private static final Set<Option> javacFileManagerOptions =
   274             Option.getJavacFileManagerOptions();
   266             Option.getJavacFileManagerOptions();
   275 
   267 
   276     @Override @DefinedBy(Api.COMPILER)
   268     @Override @DefinedBy(Api.COMPILER)
   277     public int isSupportedOption(String option) {
   269     public int isSupportedOption(String option) {
   278         for (Option o : javacFileManagerOptions) {
   270         Option o = Option.lookup(option, javacFileManagerOptions);
   279             if (o.matches(option))
   271         return (o == null) ? -1 : o.hasArg() ? 1 : 0;
   280                 return o.hasArg() ? 1 : 0;
       
   281         }
       
   282         return -1;
       
   283     }
   272     }
   284 
   273 
   285     protected String multiReleaseValue;
   274     protected String multiReleaseValue;
   286 
   275 
   287     /**
   276     /**
   314         boolean ok = true;
   303         boolean ok = true;
   315         for (Map.Entry<Option, String> e: map.entrySet()) {
   304         for (Map.Entry<Option, String> e: map.entrySet()) {
   316             try {
   305             try {
   317                 ok = ok & handleOption(e.getKey(), e.getValue());
   306                 ok = ok & handleOption(e.getKey(), e.getValue());
   318             } catch (IllegalArgumentException ex) {
   307             } catch (IllegalArgumentException ex) {
   319                 log.error(Errors.IllegalArgumentForOption(e.getKey().getText(), ex.getMessage()));
   308                 log.error(Errors.IllegalArgumentForOption(e.getKey().getPrimaryName(), ex.getMessage()));
   320                 ok = false;
   309                 ok = false;
   321             }
   310             }
   322         }
   311         }
   323         return ok;
   312         return ok;
   324     }
   313     }