[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-dev] IProjectEnvironmentVariableSupplier problem
|
Hi,
I have added an IProjectEnvironmentVariableSupplier to my plugin. I am adding
directories to the PATH and to the C_INCLUDE_PATH. My directories are being
added succesfully, but there are a couple of strange additions that I can't
explain. For project TEST, I end up with two additional 'paths' called:
TEST/[Ljava.lang.String;@1a1f05f and
TEST/[Ljava.lang.String;@ac087b
These look like string arrays that are being displayed as Strings. Any ideas
what I might be doing wrong?
Here's my code:
package com.crt.advproject.custom;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedProject;
import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable;
import
org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier;
import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider;
import org.eclipse.cdt.managedbuilder.envvar.IProjectEnvironmentVariableSupplier;
import com.crt.advproject.Activator;
import com.crt.utils.general.Utils;
public class CRTEnvironmentSupplier implements
IProjectEnvironmentVariableSupplier {
private Map<String, IBuildEnvironmentVariable> envvars = null;
private static final String DELIMITER = ";";
private static class CRTBuildEnvironmentVariable implements
IBuildEnvironmentVariable {
private final String name;
private final String value;
private final int operation;
public CRTBuildEnvironmentVariable(String name, String value,
int operation) {
this.name = name;
this.value = value;
this.operation = operation;
}
public String getDelimiter() {
return DELIMITER;
}
public String getName() {
return name;
}
public String getValue() {
return value;
}
public int getOperation() {
return operation;
}
}
public IBuildEnvironmentVariable getVariable(String variableName,
IManagedProject project, IEnvironmentVariableProvider provider) {
return getVars().get(variableName);
}
public IBuildEnvironmentVariable[] getVariables(IManagedProject project,
IEnvironmentVariableProvider provider) {
Map<String, IBuildEnvironmentVariable> envvars = getVars();
return envvars.values().toArray(
new IBuildEnvironmentVariable[envvars.size()]);
}
private void addvar(Map<String, IBuildEnvironmentVariable> envvars,
IBuildEnvironmentVariable var) {
envvars.put(var.getName(), var);
}
private StringBuffer addPath(StringBuffer buf, String[] dirs, String sep) {
for (int i = 0; i < dirs.length; i++) {
buf.append(dirs[i]);
if (i != dirs.length-1)
buf.append(sep);
}
return buf;
}
private Map<String, IBuildEnvironmentVariable> getVars() {
if (envvars == null) {
envvars = new HashMap<String, IBuildEnvironmentVariable>();
StringBuffer buff = new StringBuffer();
String[] dirs = Utils.getDirectories(Utils.PATH_DIRECTORIES);
addPath(buff, dirs, DELIMITER);
addvar(envvars, new CRTBuildEnvironmentVariable("PATH", buff
.toString(), IBuildEnvironmentVariable.ENVVAR_PREPEND));
buff = new StringBuffer();
dirs = Utils.getDirectories(Utils.INCLUDE_DIRECTORIES);
addPath(buff, dirs, DELIMITER);
addvar(envvars, new CRTBuildEnvironmentVariable("C_INCLUDE_PATH",
buff.toString(), IBuildEnvironmentVariable.ENVVAR_PREPEND));
}
return envvars;
}
}
--
Derek