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 } |