Mercurial > hg > truffle
comparison graal/com.oracle.max.base/src/com/sun/max/program/option/OptionSet.java @ 4142:bc8527f3071c
Adjust code base to new level of warnings.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sun, 18 Dec 2011 05:24:06 +0100 |
parents | e233f5660da4 |
children |
comparison
equal
deleted
inserted
replaced
4141:04d21be7a24f | 4142:bc8527f3071c |
---|---|
95 * specifies if this option set allows unrecognized options to be present when | 95 * specifies if this option set allows unrecognized options to be present when |
96 * {@linkplain #parseArguments(String[]) parsing command line arguments} or | 96 * {@linkplain #parseArguments(String[]) parsing command line arguments} or |
97 * {@linkplain #loadOptions(OptionSet) loading options from another option set}. | 97 * {@linkplain #loadOptions(OptionSet) loading options from another option set}. |
98 */ | 98 */ |
99 public OptionSet(boolean allowUnrecognizedOptions) { | 99 public OptionSet(boolean allowUnrecognizedOptions) { |
100 optionValues = new HashMap<String, String>(); | 100 optionValues = new HashMap<>(); |
101 // Using a LinkedHashMap to preserve insertion order when iterating over values | 101 // Using a LinkedHashMap to preserve insertion order when iterating over values |
102 optionMap = new LinkedHashMap<String, Option>(); | 102 optionMap = new LinkedHashMap<>(); |
103 optionSyntax = new HashMap<String, Syntax>(); | 103 optionSyntax = new HashMap<>(); |
104 this.allowUnrecognizedOptions = allowUnrecognizedOptions; | 104 this.allowUnrecognizedOptions = allowUnrecognizedOptions; |
105 } | 105 } |
106 | 106 |
107 /** | 107 /** |
108 * Converts this option set into a list of command line arguments, to be used, for example, to pass to an external | 108 * Converts this option set into a list of command line arguments, to be used, for example, to pass to an external |
467 * The {@code getSortedOptions()} method retrieves the options from this option | 467 * The {@code getSortedOptions()} method retrieves the options from this option |
468 * set, sorting all options by their names. | 468 * set, sorting all options by their names. |
469 * @return an iterable collection of {@code Option} instances, sorted according to the name of each option | 469 * @return an iterable collection of {@code Option} instances, sorted according to the name of each option |
470 */ | 470 */ |
471 public Iterable<Option<?>> getSortedOptions() { | 471 public Iterable<Option<?>> getSortedOptions() { |
472 final List<Option<?>> list = new LinkedList<Option<?>>(); | 472 final List<Option<?>> list = new LinkedList<>(); |
473 final TreeSet<String> tree = new TreeSet<String>(); | 473 final TreeSet<String> tree = new TreeSet<>(); |
474 for (String string : optionMap.keySet()) { | 474 for (String string : optionMap.keySet()) { |
475 tree.add(string); | 475 tree.add(string); |
476 } | 476 } |
477 for (String string : tree) { | 477 for (String string : tree) { |
478 list.add(optionMap.get(string)); | 478 list.add(optionMap.get(string)); |
621 } | 621 } |
622 if (fieldType == boolean.class) { | 622 if (fieldType == boolean.class) { |
623 if (prefix.length() > 0) { | 623 if (prefix.length() > 0) { |
624 // setup a "-prefix+name" option | 624 // setup a "-prefix+name" option |
625 String plusName = prefix + ":+" + name; | 625 String plusName = prefix + ":+" + name; |
626 FieldOption<Boolean> plusOption = new FieldOption<Boolean>(plusName, object, field, (Boolean) defaultValue, OptionTypes.BLANK_BOOLEAN_TYPE, help); | 626 FieldOption<Boolean> plusOption = new FieldOption<>(plusName, object, field, (Boolean) defaultValue, OptionTypes.BLANK_BOOLEAN_TYPE, help); |
627 plusOption.nullValue = true; | 627 plusOption.nullValue = true; |
628 addOption(plusOption, Syntax.REQUIRES_BLANK); | 628 addOption(plusOption, Syntax.REQUIRES_BLANK); |
629 | 629 |
630 // setup a "-prefix-name" option | 630 // setup a "-prefix-name" option |
631 String minusName = prefix + ":-" + name; | 631 String minusName = prefix + ":-" + name; |
632 FieldOption<Boolean> minusOption = new FieldOption<Boolean>(minusName, object, field, (Boolean) defaultValue, OptionTypes.BLANK_BOOLEAN_TYPE, help); | 632 FieldOption<Boolean> minusOption = new FieldOption<>(minusName, object, field, (Boolean) defaultValue, OptionTypes.BLANK_BOOLEAN_TYPE, help); |
633 minusOption.nullValue = false; | 633 minusOption.nullValue = false; |
634 return addOption(minusOption, Syntax.REQUIRES_BLANK); | 634 return addOption(minusOption, Syntax.REQUIRES_BLANK); |
635 } | 635 } |
636 return addOption(new FieldOption<Boolean>(optionName, object, field, (Boolean) defaultValue, OptionTypes.BOOLEAN_TYPE, help)); | 636 return addOption(new FieldOption<>(optionName, object, field, (Boolean) defaultValue, OptionTypes.BOOLEAN_TYPE, help)); |
637 | 637 |
638 } else if (fieldType == int.class) { | 638 } else if (fieldType == int.class) { |
639 return addOption(new FieldOption<Integer>(optionName, object, field, (Integer) defaultValue, OptionTypes.INT_TYPE, help)); | 639 return addOption(new FieldOption<>(optionName, object, field, (Integer) defaultValue, OptionTypes.INT_TYPE, help)); |
640 } else if (fieldType == float.class) { | 640 } else if (fieldType == float.class) { |
641 return addOption(new FieldOption<Float>(optionName, object, field, (Float) defaultValue, OptionTypes.FLOAT_TYPE, help)); | 641 return addOption(new FieldOption<>(optionName, object, field, (Float) defaultValue, OptionTypes.FLOAT_TYPE, help)); |
642 } else if (fieldType == long.class) { | 642 } else if (fieldType == long.class) { |
643 return addOption(new FieldOption<Long>(optionName, object, field, (Long) defaultValue, OptionTypes.LONG_TYPE, help)); | 643 return addOption(new FieldOption<>(optionName, object, field, (Long) defaultValue, OptionTypes.LONG_TYPE, help)); |
644 } else if (fieldType == double.class) { | 644 } else if (fieldType == double.class) { |
645 return addOption(new FieldOption<Double>(optionName, object, field, (Double) defaultValue, OptionTypes.DOUBLE_TYPE, help)); | 645 return addOption(new FieldOption<>(optionName, object, field, (Double) defaultValue, OptionTypes.DOUBLE_TYPE, help)); |
646 } else if (fieldType == String.class) { | 646 } else if (fieldType == String.class) { |
647 return addOption(new FieldOption<String>(optionName, object, field, (String) defaultValue, OptionTypes.STRING_TYPE, help)); | 647 return addOption(new FieldOption<>(optionName, object, field, (String) defaultValue, OptionTypes.STRING_TYPE, help)); |
648 } else if (fieldType == File.class) { | 648 } else if (fieldType == File.class) { |
649 return addOption(new FieldOption<File>(optionName, object, field, (File) defaultValue, OptionTypes.FILE_TYPE, help)); | 649 return addOption(new FieldOption<>(optionName, object, field, (File) defaultValue, OptionTypes.FILE_TYPE, help)); |
650 } else if (fieldType.isEnum()) { | 650 } else if (fieldType.isEnum()) { |
651 final Class<? extends Enum> enumClass = Utils.cast(fieldType); | 651 final Class<? extends Enum> enumClass = Utils.cast(fieldType); |
652 return addOption(makeEnumFieldOption(optionName, object, field, defaultValue, enumClass, help)); | 652 return addOption(makeEnumFieldOption(optionName, object, field, defaultValue, enumClass, help)); |
653 } | 653 } |
654 return null; | 654 return null; |
655 } | 655 } |
656 | 656 |
657 private <T extends Enum<T>> FieldOption<T> makeEnumFieldOption(String name, Object object, Field field, Object defaultValue, Class<T> enumClass, String help) { | 657 private static <T extends Enum<T>> FieldOption<T> makeEnumFieldOption(String name, Object object, Field field, Object defaultValue, Class<T> enumClass, String help) { |
658 final OptionTypes.EnumType<T> optionType = new OptionTypes.EnumType<T>(enumClass); | 658 final OptionTypes.EnumType<T> optionType = new OptionTypes.EnumType<>(enumClass); |
659 final T defaultV = Utils.<T>cast(defaultValue); | 659 final T defaultV = Utils.<T>cast(defaultValue); |
660 return new FieldOption<T>(name, object, field, defaultV, optionType, help); | 660 return new FieldOption<>(name, object, field, defaultV, optionType, help); |
661 } | 661 } |
662 | 662 |
663 public Option<String> newStringOption(String name, String defaultValue, String help) { | 663 public Option<String> newStringOption(String name, String defaultValue, String help) { |
664 return addOption(new Option<String>(name, defaultValue, OptionTypes.STRING_TYPE, help)); | 664 return addOption(new Option<>(name, defaultValue, OptionTypes.STRING_TYPE, help)); |
665 } | 665 } |
666 | 666 |
667 public Option<Integer> newIntegerOption(String name, Integer defaultValue, String help) { | 667 public Option<Integer> newIntegerOption(String name, Integer defaultValue, String help) { |
668 return addOption(new Option<Integer>(name, defaultValue, OptionTypes.INT_TYPE, help)); | 668 return addOption(new Option<>(name, defaultValue, OptionTypes.INT_TYPE, help)); |
669 } | 669 } |
670 | 670 |
671 public Option<Long> newLongOption(String name, Long defaultValue, String help) { | 671 public Option<Long> newLongOption(String name, Long defaultValue, String help) { |
672 return addOption(new Option<Long>(name, defaultValue, OptionTypes.LONG_TYPE, help)); | 672 return addOption(new Option<>(name, defaultValue, OptionTypes.LONG_TYPE, help)); |
673 } | 673 } |
674 | 674 |
675 public Option<Float> newFloatOption(String name, Float defaultValue, String help) { | 675 public Option<Float> newFloatOption(String name, Float defaultValue, String help) { |
676 return addOption(new Option<Float>(name, defaultValue, OptionTypes.FLOAT_TYPE, help)); | 676 return addOption(new Option<>(name, defaultValue, OptionTypes.FLOAT_TYPE, help)); |
677 } | 677 } |
678 | 678 |
679 public Option<Double> newDoubleOption(String name, Double defaultValue, String help) { | 679 public Option<Double> newDoubleOption(String name, Double defaultValue, String help) { |
680 return addOption(new Option<Double>(name, defaultValue, OptionTypes.DOUBLE_TYPE, help)); | 680 return addOption(new Option<>(name, defaultValue, OptionTypes.DOUBLE_TYPE, help)); |
681 } | 681 } |
682 | 682 |
683 public Option<List<String>> newStringListOption(String name, String defaultValue, String help) { | 683 public Option<List<String>> newStringListOption(String name, String defaultValue, String help) { |
684 return addOption(new Option<List<String>>(name, defaultValue == null ? null : OptionTypes.COMMA_SEPARATED_STRING_LIST_TYPE.parseValue(defaultValue), OptionTypes.COMMA_SEPARATED_STRING_LIST_TYPE, help)); | 684 return addOption(new Option<>(name, defaultValue == null ? null : OptionTypes.COMMA_SEPARATED_STRING_LIST_TYPE.parseValue(defaultValue), OptionTypes.COMMA_SEPARATED_STRING_LIST_TYPE, help)); |
685 } | 685 } |
686 | 686 |
687 public Option<List<String>> newStringListOption(String name, String[] defaultValue, String help) { | 687 public Option<List<String>> newStringListOption(String name, String[] defaultValue, String help) { |
688 List<String> list = null; | 688 List<String> list = null; |
689 if (defaultValue != null) { | 689 if (defaultValue != null) { |
690 list = new ArrayList<String>(defaultValue.length); | 690 list = new ArrayList<>(defaultValue.length); |
691 list.addAll(Arrays.asList(defaultValue)); | 691 list.addAll(Arrays.asList(defaultValue)); |
692 } | 692 } |
693 return addOption(new Option<List<String>>(name, list, OptionTypes.COMMA_SEPARATED_STRING_LIST_TYPE, help)); | 693 return addOption(new Option<>(name, list, OptionTypes.COMMA_SEPARATED_STRING_LIST_TYPE, help)); |
694 } | 694 } |
695 | 695 |
696 public Option<List<String>> newStringListOption(String name, String defaultValue, char separator, String help) { | 696 public Option<List<String>> newStringListOption(String name, String defaultValue, char separator, String help) { |
697 final OptionTypes.StringListType type = new OptionTypes.StringListType(separator); | 697 final OptionTypes.StringListType type = new OptionTypes.StringListType(separator); |
698 return addOption(new Option<List<String>>(name, defaultValue == null ? null : type.parseValue(defaultValue), type, help)); | 698 return addOption(new Option<>(name, defaultValue == null ? null : type.parseValue(defaultValue), type, help)); |
699 } | 699 } |
700 | 700 |
701 public <T> Option<List<T>> newListOption(String name, String defaultValue, Option.Type<T> elementOptionType, char separator, String help) { | 701 public <T> Option<List<T>> newListOption(String name, String defaultValue, Option.Type<T> elementOptionType, char separator, String help) { |
702 final OptionTypes.ListType<T> type = new OptionTypes.ListType<T>(separator, elementOptionType); | 702 final OptionTypes.ListType<T> type = new OptionTypes.ListType<>(separator, elementOptionType); |
703 return addOption(new Option<List<T>>(name, defaultValue == null ? null : type.parseValue(defaultValue), type, help)); | 703 return addOption(new Option<>(name, defaultValue == null ? null : type.parseValue(defaultValue), type, help)); |
704 } | 704 } |
705 | 705 |
706 public Option<File> newFileOption(String name, String defaultValue, String help) { | 706 public Option<File> newFileOption(String name, String defaultValue, String help) { |
707 return newFileOption(name, OptionTypes.FILE_TYPE.parseValue(defaultValue), help); | 707 return newFileOption(name, OptionTypes.FILE_TYPE.parseValue(defaultValue), help); |
708 } | 708 } |
709 | 709 |
710 public Option<File> newFileOption(String name, File defaultValue, String help) { | 710 public Option<File> newFileOption(String name, File defaultValue, String help) { |
711 return addOption(new Option<File>(name, defaultValue, OptionTypes.FILE_TYPE, help)); | 711 return addOption(new Option<>(name, defaultValue, OptionTypes.FILE_TYPE, help)); |
712 } | 712 } |
713 | 713 |
714 public Option<URL> newURLOption(String name, URL defaultValue, String help) { | 714 public Option<URL> newURLOption(String name, URL defaultValue, String help) { |
715 return addOption(new Option<URL>(name, defaultValue, OptionTypes.URL_TYPE, help)); | 715 return addOption(new Option<>(name, defaultValue, OptionTypes.URL_TYPE, help)); |
716 } | 716 } |
717 | 717 |
718 public <T> Option<T> newInstanceOption(String name, Class<T> klass, T defaultValue, String help) { | 718 public <T> Option<T> newInstanceOption(String name, Class<T> klass, T defaultValue, String help) { |
719 return addOption(new Option<T>(name, defaultValue, OptionTypes.createInstanceOptionType(klass), help)); | 719 return addOption(new Option<>(name, defaultValue, OptionTypes.createInstanceOptionType(klass), help)); |
720 } | 720 } |
721 | 721 |
722 public <T> Option<List<T>> newListInstanceOption(String name, String defaultValue, Class<T> klass, char separator, String help) { | 722 public <T> Option<List<T>> newListInstanceOption(String name, String defaultValue, Class<T> klass, char separator, String help) { |
723 final OptionTypes.ListType<T> type = OptionTypes.createInstanceListOptionType(klass, separator); | 723 final OptionTypes.ListType<T> type = OptionTypes.createInstanceListOptionType(klass, separator); |
724 return addOption(new Option<List<T>>(name, (defaultValue == null) ? null : type.parseValue(defaultValue), type, help)); | 724 return addOption(new Option<>(name, (defaultValue == null) ? null : type.parseValue(defaultValue), type, help)); |
725 } | 725 } |
726 | 726 |
727 public Option<Boolean> newBooleanOption(String name, Boolean defaultValue, String help) { | 727 public Option<Boolean> newBooleanOption(String name, Boolean defaultValue, String help) { |
728 if (defaultValue != null && !defaultValue) { | 728 if (defaultValue != null && !defaultValue) { |
729 return addOption(new Option<Boolean>(name, defaultValue, OptionTypes.BOOLEAN_TYPE, help), Syntax.EQUALS_OR_BLANK); | 729 return addOption(new Option<>(name, defaultValue, OptionTypes.BOOLEAN_TYPE, help), Syntax.EQUALS_OR_BLANK); |
730 } | 730 } |
731 return addOption(new Option<Boolean>(name, defaultValue, OptionTypes.BOOLEAN_TYPE, help)); | 731 return addOption(new Option<>(name, defaultValue, OptionTypes.BOOLEAN_TYPE, help)); |
732 } | 732 } |
733 | 733 |
734 public <T> Option<T> newOption(String name, String defaultValue, Option.Type<T> type, String help) { | 734 public <T> Option<T> newOption(String name, String defaultValue, Option.Type<T> type, String help) { |
735 return newOption(name, type.parseValue(defaultValue), type, Syntax.REQUIRES_EQUALS, help); | 735 return newOption(name, type.parseValue(defaultValue), type, Syntax.REQUIRES_EQUALS, help); |
736 } | 736 } |
737 | 737 |
738 public <T> Option<T> newOption(String name, T defaultValue, Option.Type<T> type, Syntax syntax, String help) { | 738 public <T> Option<T> newOption(String name, T defaultValue, Option.Type<T> type, Syntax syntax, String help) { |
739 return addOption(new Option<T>(name, defaultValue, type, help), syntax); | 739 return addOption(new Option<>(name, defaultValue, type, help), syntax); |
740 } | 740 } |
741 | 741 |
742 public <E extends Enum<E>> Option<E> newEnumOption(String name, E defaultValue, Class<E> enumClass, String help) { | 742 public <E extends Enum<E>> Option<E> newEnumOption(String name, E defaultValue, Class<E> enumClass, String help) { |
743 return addOption(new Option<E>(name, defaultValue, new OptionTypes.EnumType<E>(enumClass), help)); | 743 return addOption(new Option<>(name, defaultValue, new OptionTypes.EnumType<>(enumClass), help)); |
744 } | 744 } |
745 | 745 |
746 public <E extends Enum<E>> Option<List<E>> newEnumListOption(String name, Iterable<E> defaultValue, Class<E> enumClass, String help) { | 746 public <E extends Enum<E>> Option<List<E>> newEnumListOption(String name, Iterable<E> defaultValue, Class<E> enumClass, String help) { |
747 final List<E> list; | 747 final List<E> list; |
748 if (defaultValue == null) { | 748 if (defaultValue == null) { |
749 list = null; | 749 list = null; |
750 } else if (defaultValue instanceof List) { | 750 } else if (defaultValue instanceof List) { |
751 list = Utils.cast(defaultValue); | 751 list = Utils.cast(defaultValue); |
752 } else if (defaultValue instanceof Collection) { | 752 } else if (defaultValue instanceof Collection) { |
753 final Collection<E> collection = Utils.cast(defaultValue); | 753 final Collection<E> collection = Utils.cast(defaultValue); |
754 list = new ArrayList<E>(collection); | 754 list = new ArrayList<>(collection); |
755 } else { | 755 } else { |
756 list = new ArrayList<E>(); | 756 list = new ArrayList<>(); |
757 for (E value : defaultValue) { | 757 for (E value : defaultValue) { |
758 list.add(value); | 758 list.add(value); |
759 } | 759 } |
760 } | 760 } |
761 final Option<List<E>> option = new Option<List<E>>(name, list, new OptionTypes.EnumListType<E>(enumClass, ','), help); | 761 final Option<List<E>> option = new Option<>(name, list, new OptionTypes.EnumListType<>(enumClass, ','), help); |
762 return addOption(option); | 762 return addOption(option); |
763 } | 763 } |
764 | 764 |
765 public Option<File> newConfigOption(String name, File defaultFile, String help) { | 765 public Option<File> newConfigOption(String name, File defaultFile, String help) { |
766 return addOption(new Option<File>(name, defaultFile, new OptionTypes.ConfigFile(this), help)); | 766 return addOption(new Option<>(name, defaultFile, new OptionTypes.ConfigFile(this), help)); |
767 } | 767 } |
768 } | 768 } |