@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000,2002 The Apache Software Foundation. All rights
* Copyright (c) 2000,2002-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -64,39 +64,84 @@ import org.apache.tools.ant.BuildException;
*/
public class Environment {
/**
* a vector of type Enviromment.Variable
* @see Variable
*/
protected Vector variables;
/**
* representation of a single env value
*/
public static class Variable {
/**
* env key and value pair; everything gets expanded to a string
* during assignment
*/
private String key, value;
public Variable() {
super();
}
/**
* set the key
* @param key string
*/
public void setKey(String key) {
this.key = key;
}
/**
* set the value
* @param value string value
*/
public void setValue(String value) {
this.value = value;
}
/**
* key accessor
* @return key
*/
public String getKey() {
return this.key;
}
/**
* value accessor
* @return value
*/
public String getValue() {
return this.value;
}
/**
* stringify path and assign to the value.
* The value will contain all path elements separated by the appropriate
* separator
* @param path path
*/
public void setPath(Path path) {
this.value = path.toString();
}
/**
* get the absolute path of a file and assign it to the value
* @param file file to use as the value
*/
public void setFile(java.io.File file) {
this.value = file.getAbsolutePath();
}
/**
* get the assigment string
* This is not ready for insertion into a property file without following
* the escaping rules of the properties class.
* @return a string of the form key=value.
* @throws BuildException if key or value are unassigned
*/
public String getContent() throws BuildException {
if (key == null || value == null) {
throw new BuildException("key and value must be specified for environment variables.");
@@ -107,14 +152,28 @@ public class Environment {
}
}
/**
* constructor
*/
public Environment() {
variables = new Vector();
}
/**
* add a variable.
* Validity checking is <i>not</i> performed at this point. Duplicates
* are not caught either.
* @param var new variable.
*/
public void addVariable(Variable var) {
variables.addElement(var);
}
/**
* get the variable list as an array
* @return array of key=value assignment strings
* @throws BuildException if any variable is misconfigured
*/
public String[] getVariables() throws BuildException {
if (variables.size() == 0) {
return null;