changeset 1002:81508fc5f27b

Avoid warnings for commands Reviewed-by: vanaltj Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-February/005821.html
author Omair Majid <omajid@redhat.com>
date Tue, 26 Feb 2013 10:56:45 -0500
parents a51dd3bfa1d1
children 0e3c1efc6c15
files distribution/config/commands/agent.properties launcher/src/main/java/com/redhat/thermostat/launcher/internal/BuiltInCommandInfo.java
diffstat 2 files changed, 24 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/distribution/config/commands/agent.properties	Tue Feb 26 15:24:07 2013 +0100
+++ b/distribution/config/commands/agent.properties	Tue Feb 26 10:56:45 2013 -0500
@@ -48,6 +48,8 @@
 saveOnExit.short = s
 saveOnExit.long = saveOnExit
 saveOnExit.description = save the data on exit
+saveOnExit.required = false
+saveOnExit.hasarg = false
 
 dbUrl.required = true
 
--- a/launcher/src/main/java/com/redhat/thermostat/launcher/internal/BuiltInCommandInfo.java	Tue Feb 26 15:24:07 2013 +0100
+++ b/launcher/src/main/java/com/redhat/thermostat/launcher/internal/BuiltInCommandInfo.java	Tue Feb 26 10:56:45 2013 -0500
@@ -70,9 +70,9 @@
     private Options options;
     private List<String> dependencies;
 
-    BuiltInCommandInfo(String name, Properties properties, String libRoot) {
+    BuiltInCommandInfo(String commandName, Properties properties, String libRoot) {
         options = new Options();
-        this.name = name;
+        this.name = commandName;
         for (Entry<Object,Object> entry: properties.entrySet()) {
             String key = (String) entry.getKey();
             if (key.equals(PROPERTY_BUNDLES)) {
@@ -152,7 +152,9 @@
             List<String> optionsList = Arrays.asList(optionString.split("\\|"));
             if (optionsList.size() == 1) {
             	// Not a group
-                Option option = optionFromProperties(optionsList.get(0).trim(), props);
+                String optionName = optionsList.get(0).trim();
+                boolean forOverridingRequired = CommonOptions.ALL_COMMON_OPTIONS.contains(optionName);
+                Option option = optionFromProperties(optionName, props, forOverridingRequired);
                 if (optionConflicts(option, commonOptionsToAdd, propertiesOptions)) {
                     throwConflictingOption(option);
                 }
@@ -183,7 +185,14 @@
         }
     }
 
-    private Option optionFromProperties(String name, Properties props) {
+    /**
+     * @param name the name of the option
+     * @param props the properties object that contains more information about that option
+     * @param forOverridingRequiredOnly indicates that the option is for
+     * overriding the required property of a common option
+     * @return an Option object created by parsing the props
+     */
+    private Option optionFromProperties(String name, Properties props, boolean forOverridingRequiredOnly) {
         String opt = null;
         String longOpt = null;
         boolean hasArg = false;
@@ -203,18 +212,22 @@
             longOpt = (String) props.getProperty(longKey);
         }
         if (opt == null && longOpt == null) {
-            logger.warning("Neither short nor long version of option " + name + " was set.  Assuming long option same as name.");
             longOpt = name;
+            if (!forOverridingRequiredOnly) {
+                logger.info("Command '" + this.name + "': Neither short nor long version of option " + name + " was set.  Assuming long option same as name.");
+            }
         }
         if (props.containsKey(argKey)) {
             hasArg = Boolean.parseBoolean((String) props.getProperty(argKey));
         } else {
-            logger.warning("The 'hasarg' property for " + name + " was not set.  Assuming FALSE");
+            if (!forOverridingRequiredOnly) {
+                logger.info("Command '" + this.name + "': The 'hasarg' property for " + name + " was not set.  Assuming FALSE");
+            }
         }
         if (props.containsKey(requiredKey)) {
             required = Boolean.parseBoolean((String) props.getProperty(requiredKey));
         } else {
-            logger.warning("The 'required' property for " + name + " was not set.  Assuming FALSE");
+            logger.info("Command '" + this.name + "': The 'required' property for " + name + " was not set.  Assuming FALSE");
         }
         if (props.containsKey(descKey)) {
             description = (String) props.getProperty(descKey);
@@ -236,7 +249,8 @@
         OptionGroup og = new OptionGroup();
         og.setRequired(true);
         for (String optionName : optionsList) {
-            Option option = optionFromProperties(optionName.trim(), props);
+            boolean forOverridingRequired = CommonOptions.ALL_COMMON_OPTIONS.contains(optionName);
+            Option option = optionFromProperties(optionName.trim(), props, forOverridingRequired);
             if (optionConflictsWithGroup(option, og) |
                     optionConflicts(option, commonOpts, propOpts)) {
                 throwConflictingOption(option);