Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * RHQ Management Platform
   * Copyright (C) 2010 Red Hat, Inc.
   * All rights reserved.
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation version 2 of the License.
   *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  * GNU General Public License for more details.
  * * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 package org.rhq.bundle.ant.type;
 
 
An Ant type that defines a basic property that the user provides as input for deployment of a bundle. Typically, the property will be substituted into configuration files from the bundle during deployment - see ReplaceTask. If the deployment script is invoked from the GUI, the user will be prompted for values for any input properties that are defined via this type. If the script is invoked from the command line, the properties must be passed using the -D and/or -propertyfile options.

Author(s):
Ian Springer
 
 public class InputPropertyType extends AbstractBundleType {
     private String name;
     private String description;
     private boolean required = true;
     private String defaultValue;
     private String type = ..xmlName();
 
     public void init() throws BuildException {
         validateAttributes();
 
         PropertySimpleType propType = PropertySimpleType.fromXmlName(this.);
         PropertyDefinitionSimple propDef = new PropertyDefinitionSimple(this.this.this.,
             propType);
         propDef.setDefaultValue(this.);
         configDef.put(propDef);
 
         String value = getProject().getProperty(this.);
         if (value == null) {
             value = this.;
             getProject().setProperty(this.value);
         }
 
         boolean parseOnly = getProject().isParseOnly();
         if (!parseOnly) {
             if (value == null && this.) {
                 throw new BuildException("No value was specified for required input property '" + this.
                     + "', and no default is defined for the property.");
             }
             validateValue(valuepropType);
             String valueString = (value != null) ? "'" + value + "'" : "<null>";
             log("Initializing input property '" + this. + "' with value " + valueString + "...");
         }
 
         Configuration config = getProject().getConfiguration();
         PropertySimple prop = new PropertySimple(this.value);
         config.put(prop);
 
         return;
     }
 
     public String getDescription() {
         return ;
     }
 
     public void setDescription(String description) {
         this. = description;
     }
 
     public String getName() {
         return ;
     }
 
     public void setName(String name) {
         this. = name;
     }
 
     public String getDefaultValue() {
         return ;
     }
 
    public void setDefaultValue(String defaultValue) {
        this. = defaultValue;
    }
    public Boolean getRequired() {
        return ;
    }
    public void setRequired(Boolean required) {
        this. = required;
    }
    public String getType() {
        return ;
    }
    public void setType(String type) {
        this. = type;
    }

    
Ensure we have a consistent and legal set of attributes, and set any internal flags necessary based on different combinations of attributes.

Throws:
org.apache.tools.ant.BuildException if an error occurs
    protected void validateAttributes() throws BuildException {
        if (this. == null) {
            throw new BuildException("The 'name' attribute is required.");
        }
        if (this..length() == 0) {
            throw new BuildException("The 'name' attribute must have a non-empty value.");
        }
        PropertySimpleType propType;
        try {
            propType = PropertySimpleType.fromXmlName(this.);
        } catch (IllegalArgumentException e) {
            throw new BuildException("Illegal value for 'type' attribute: " + this.);
        }
        if (this. == null) {
            if (!this.) {
                log("No default value was specified for optional input property '" + this. + "'.".);
            }
        } else {
            // Make sure the default value is valid according to the property's type.
            try {
                validateValue(this.propType);
            } catch (RuntimeException e) {
                throw new BuildException("Default value '" + this.
                    + "' is not valid according to 'type' attribute: " + this.e);
            }
        }
    }
    private void validateValue(String valuePropertySimpleType propType) {
        if (value != null) {
            try {
                switch (propType) {
                case :
                    if (!value.equals(..toString()) && !value.equals(..toString())) {
                        throw new RuntimeException(
                            "Illegal value for boolean property - value must be 'true' or 'false'." + value);
                    }
                    break;
                case :
                    Double.valueOf(value);
                    break;
                case :
                    Float.valueOf(value);
                    break;
                case :
                    Integer.valueOf(value);
                    break;
                case :
                    Long.valueOf(value);
                    break;
                }
            } catch (RuntimeException e) {
                throw new BuildException("'" + value + "' is not a legal value for input property '" + this.
                    + "', which has type '" + this. + "'."e);
            }
        }
    }
New to GrepCode? Check out our FAQ X