Methods Summary |
---|
protected void | addProperties(java.util.Properties props)iterate through a set of properties,
resolve them then assign them
resolveAllProperties(props);
Enumeration e = props.keys();
while (e.hasMoreElements()) {
String propertyName = (String) e.nextElement();
String propertyValue = props.getProperty(propertyName);
String v = getProject().replaceProperties(propertyValue);
if (prefix != null) {
propertyName = prefix + propertyName;
}
addProperty(propertyName, v);
}
|
protected void | addProperty(java.lang.String n, java.lang.String v)add a name value pair to the project property set
if (userProperty) {
if (getProject().getUserProperty(n) == null) {
getProject().setInheritedProperty(n, v);
} else {
log("Override ignored for " + n, Project.MSG_VERBOSE);
}
} else {
getProject().setNewProperty(n, v);
}
|
public org.apache.tools.ant.types.Path | createClasspath()The classpath to use when looking up a resource.
if (this.classpath == null) {
this.classpath = new Path(getProject());
}
return this.classpath.createPath();
|
public void | execute()set the property in the project to the value.
if the task was give a file, resource or env attribute
here is where it is loaded
if (getProject() == null) {
throw new IllegalStateException("project has not been set");
}
if (name != null) {
if (value == null && ref == null) {
throw new BuildException("You must specify value, location or "
+ "refid with the name attribute",
getLocation());
}
} else {
if (url == null && file == null && resource == null && env == null) {
throw new BuildException("You must specify url, file, resource or "
+ "environment when not using the "
+ "name attribute", getLocation());
}
}
if (url == null && file == null && resource == null && prefix != null) {
throw new BuildException("Prefix is only valid when loading from "
+ "a url, file or resource", getLocation());
}
if ((name != null) && (value != null)) {
addProperty(name, value);
}
if (file != null) {
loadFile(file);
}
if (url != null) {
loadUrl(url);
}
if (resource != null) {
loadResource(resource);
}
if (env != null) {
loadEnvironment(env);
}
if ((name != null) && (ref != null)) {
try {
addProperty(name,
ref.getReferencedObject(getProject()).toString());
} catch (BuildException be) {
if (fallback != null) {
addProperty(name,
ref.getReferencedObject(fallback).toString());
} else {
throw be;
}
}
}
|
public org.apache.tools.ant.types.Path | getClasspath()Get the classpath used when looking up a resource.
return classpath;
|
public java.lang.String | getEnvironment()Get the environment attribute.
return env;
|
public java.io.File | getFile()Get the file attribute.
return file;
|
public java.lang.String | getName()Get the property name.
return name;
|
public java.lang.String | getPrefix()Get the prefix attribute.
return prefix;
|
public org.apache.tools.ant.types.Reference | getRefid()Get the refid attribute.
return ref;
|
public java.lang.String | getResource()Get the resource attribute.
return resource;
|
public java.net.URL | getUrl()Get the url attribute.
return url;
|
public java.lang.String | getValue()Get the property value.
return value;
|
protected void | loadEnvironment(java.lang.String prefix)load the environment values
Properties props = new Properties();
if (!prefix.endsWith(".")) {
prefix += ".";
}
log("Loading Environment " + prefix, Project.MSG_VERBOSE);
Vector osEnv = Execute.getProcEnvironment();
for (Enumeration e = osEnv.elements(); e.hasMoreElements();) {
String entry = (String) e.nextElement();
int pos = entry.indexOf('=");
if (pos == -1) {
log("Ignoring: " + entry, Project.MSG_WARN);
} else {
props.put(prefix + entry.substring(0, pos),
entry.substring(pos + 1));
}
}
addProperties(props);
|
protected void | loadFile(java.io.File file)load properties from a file
Properties props = new Properties();
log("Loading " + file.getAbsolutePath(), Project.MSG_VERBOSE);
try {
if (file.exists()) {
FileInputStream fis = new FileInputStream(file);
try {
props.load(fis);
} finally {
if (fis != null) {
fis.close();
}
}
addProperties(props);
} else {
log("Unable to find property file: " + file.getAbsolutePath(),
Project.MSG_VERBOSE);
}
} catch (IOException ex) {
throw new BuildException(ex, getLocation());
}
|
protected void | loadResource(java.lang.String name)load properties from a resource in the current classpath
Properties props = new Properties();
log("Resource Loading " + name, Project.MSG_VERBOSE);
InputStream is = null;
try {
ClassLoader cL = null;
if (classpath != null) {
cL = getProject().createClassLoader(classpath);
} else {
cL = this.getClass().getClassLoader();
}
if (cL == null) {
is = ClassLoader.getSystemResourceAsStream(name);
} else {
is = cL.getResourceAsStream(name);
}
if (is != null) {
props.load(is);
addProperties(props);
} else {
log("Unable to find resource " + name, Project.MSG_WARN);
}
} catch (IOException ex) {
throw new BuildException(ex, getLocation());
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
// ignore
}
}
}
|
protected void | loadUrl(java.net.URL url)load properties from a url
Properties props = new Properties();
log("Loading " + url, Project.MSG_VERBOSE);
try {
InputStream is = url.openStream();
try {
props.load(is);
} finally {
if (is != null) {
is.close();
}
}
addProperties(props);
} catch (IOException ex) {
throw new BuildException(ex, getLocation());
}
|
private void | resolve(java.util.Properties props, java.lang.String name, java.util.Stack referencesSeen)Recursively expand the named property using the project's
reference table and the given set of properties - fail if a
circular definition is detected.
if (referencesSeen.contains(name)) {
throw new BuildException("Property " + name + " was circularly "
+ "defined.");
}
String propertyValue = props.getProperty(name);
Vector fragments = new Vector();
Vector propertyRefs = new Vector();
PropertyHelper.getPropertyHelper(
this.getProject()).parsePropertyString(
propertyValue, fragments, propertyRefs);
if (propertyRefs.size() != 0) {
referencesSeen.push(name);
StringBuffer sb = new StringBuffer();
Enumeration i = fragments.elements();
Enumeration j = propertyRefs.elements();
while (i.hasMoreElements()) {
String fragment = (String) i.nextElement();
if (fragment == null) {
String propertyName = (String) j.nextElement();
fragment = getProject().getProperty(propertyName);
if (fragment == null) {
if (props.containsKey(propertyName)) {
resolve(props, propertyName, referencesSeen);
fragment = props.getProperty(propertyName);
} else {
fragment = "${" + propertyName + "}";
}
}
}
sb.append(fragment);
}
propertyValue = sb.toString();
props.put(name, propertyValue);
referencesSeen.pop();
}
|
private void | resolveAllProperties(java.util.Properties props)resolve properties inside a properties hashtable
for (Enumeration e = props.keys(); e.hasMoreElements();) {
String propertyName = (String) e.nextElement();
Stack referencesSeen = new Stack();
resolve(props, propertyName, referencesSeen);
}
|
public void | setClasspath(org.apache.tools.ant.types.Path classpath)The classpath to use when looking up a resource.
if (this.classpath == null) {
this.classpath = classpath;
} else {
this.classpath.append(classpath);
}
|
public void | setClasspathRef(org.apache.tools.ant.types.Reference r)the classpath to use when looking up a resource,
given as reference to a <path> defined elsewhere
createClasspath().setRefid(r);
|
public void | setEnvironment(java.lang.String env)Prefix to use when retrieving environment variables.
Thus if you specify environment="myenv"
you will be able to access OS-specific
environment variables via property names "myenv.PATH" or
"myenv.TERM".
Note that if you supply a property name with a final
"." it will not be doubled. ie environment="myenv." will still
allow access of environment variables through "myenv.PATH" and
"myenv.TERM". This functionality is currently only implemented
on select platforms. Feel free to send patches to increase the number of platforms
this functionality is supported on ;).
Note also that properties are case sensitive, even if the
environment variables on your operating system are not, e.g. it
will be ${env.Path} not ${env.PATH} on Windows 2000.
this.env = env;
|
public void | setFile(java.io.File file)Filename of a property file to load.
this.file = file;
|
public void | setLocation(java.io.File location)Sets the property to the absolute filename of the
given file. If the value of this attribute is an absolute path, it
is left unchanged (with / and \ characters converted to the
current platforms conventions). Otherwise it is taken as a path
relative to the project's basedir and expanded.
setValue(location.getAbsolutePath());
|
public void | setName(java.lang.String name)The name of the property to set.
this.name = name;
|
public void | setPrefix(java.lang.String prefix)Prefix to apply to properties loaded using file
or resource .
A "." is appended to the prefix if not specified.
this.prefix = prefix;
if (!prefix.endsWith(".")) {
this.prefix += ".";
}
|
public void | setRefid(org.apache.tools.ant.types.Reference ref)Sets a reference to an Ant datatype
declared elsewhere.
Only yields reasonable results for references
PATH like structures or properties.
this.ref = ref;
|
public void | setResource(java.lang.String resource)The resource name of a property file to load
this.resource = resource;
|
public void | setUrl(java.net.URL url)The url from which to load properties.
this.url = url;
|
public void | setUserProperty(boolean userProperty)
log("DEPRECATED: Ignoring request to set user property in Property"
+ " task.", Project.MSG_WARN);
|
public void | setValue(java.lang.String value)The value of the property.
this.value = value;
|
public java.lang.String | toString()get the value of this property
return value == null ? "" : value;
|