001 /*
002 * Param.java
003 *
004 * Created on October 1, 2002, 11:01 AM
005 */
006
007 package biz.hammurapi.ant;
008
009 import org.apache.tools.ant.BuildException;
010
011 /**
012 * Parameter
013 * @ant.element name="parameter"
014 * @author Pavel Vlasov
015 * @version $Revision: 1.2 $
016 */
017 public class Param extends ObjectEntry {
018
019 private String name=null;
020
021 /**
022 * @ant.ignore
023 * @return
024 */
025 public String getName() {
026 return name;
027 }
028
029 /**
030 * Parameter name.
031 * @ant.required
032 * @param name
033 */
034 public void setName(String name) {
035 this.name = name;
036 }
037
038 /**
039 * Reads value from the property.
040 */
041 private String property=null;
042
043 /**
044 * Property to get value from. Value will not be set if property is not set.
045 * Mutually exclusive with value and className
046 * @ant.non-required
047 * @param name
048 */
049 public void setProperty(String property) {
050 this.property=property;
051 }
052
053 public Object getObject(ClassLoader masterClassLoader) throws BuildException {
054 if (property!=null) {
055 if (getValue()!=null) {
056 throw new BuildException("property and value attributes are mutually exclusive");
057 }
058
059 if (getClassName()!=null) {
060 throw new BuildException("property and className attributes are mutually exclusive");
061 }
062
063 return getProject()==null ? null : getProject().getProperty(property);
064 }
065 return super.getObject(masterClassLoader);
066 }
067
068 public String getProperty() {
069 return property;
070 }
071
072 public void execute() throws BuildException {
073 if (name==null){
074 throw new BuildException("Name attribute is mandatory");
075 }
076
077 if (getValue()==null && property==null && getClassName()==null) {
078 throw new BuildException("Either value, property or className must be set");
079 }
080 }
081 }