| Method from org.apache.tools.ant.taskdefs.Property Detail: |
protected void addProperties(Properties props) {
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);
}
}
iterate through a set of properties,
resolve them then assign them |
protected void addProperty(String n,
String v) {
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);
}
}
add a name value pair to the project property set |
public Path createClasspath() {
if (this.classpath == null) {
this.classpath = new Path(getProject());
}
return this.classpath.createPath();
}
The classpath to use when looking up a resource. |
public void execute() throws BuildException {
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;
}
}
}
}
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 |
public Path getClasspath() {
return classpath;
}
Get the classpath used when looking up a resource. |
public String getEnvironment() {
return env;
}
Get the environment attribute. |
public File getFile() {
return file;
}
|
public String getName() {
return name;
}
|
public String getPrefix() {
return prefix;
}
Get the prefix attribute. |
public Reference getRefid() {
return ref;
}
|
public String getResource() {
return resource;
}
Get the resource attribute. |
public URL getUrl() {
return url;
}
|
public String getValue() {
return value;
}
|
protected void loadEnvironment(String prefix) {
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);
}
load the environment values |
protected void loadFile(File file) throws BuildException {
Properties props = new Properties();
log("Loading " + file.getAbsolutePath(), Project.MSG_VERBOSE);
try {
if (file.exists()) {
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
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());
}
}
load properties from a file |
protected void loadResource(String name) {
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
}
}
}
}
load properties from a resource in the current classpath |
protected void loadUrl(URL url) throws BuildException {
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());
}
}
load properties from a url |
public void setClasspath(Path classpath) {
if (this.classpath == null) {
this.classpath = classpath;
} else {
this.classpath.append(classpath);
}
}
The classpath to use when looking up a resource. |
public void setClasspathRef(Reference r) {
createClasspath().setRefid(r);
}
the classpath to use when looking up a resource,
given as reference to a <path> defined elsewhere |
public void setEnvironment(String env) {
this.env = 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. |
public void setFile(File file) {
this.file = file;
}
Filename of a property file to load. |
public void setLocation(File location) {
setValue(location.getAbsolutePath());
}
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. |
public void setName(String name) {
this.name = name;
}
The name of the property to set. |
public void setPrefix(String prefix) {
this.prefix = prefix;
if (!prefix.endsWith(".")) {
this.prefix += ".";
}
}
Prefix to apply to properties loaded using file
or resource.
A "." is appended to the prefix if not specified. |
public void setRefid(Reference ref) {
this.ref = ref;
}
Sets a reference to an Ant datatype
declared elsewhere.
Only yields reasonable results for references
PATH like structures or properties. |
public void setResource(String resource) {
this.resource = resource;
}
The resource name of a property file to load |
public void setUrl(URL url) {
this.url = url;
}
The url from which to load properties. |
public void setUserProperty(boolean userProperty) {
log("DEPRECATED: Ignoring request to set user property in Property"
+ " task.", Project.MSG_WARN);
} Deprecated! since - 1.5.x.
This was never a supported feature and has been
deprecated without replacement.
|
public void setValue(String value) {
this.value = value;
}
The value of the property. |
public String toString() {
return value == null ? "" : value;
}
get the value of this property |