|
I almost got my evil scheme to work...
try {
Field fieldProp = Project.class.getDeclaredField("properties");
fieldProp.setAccessible(true);
Hashtable props = (Hashtable) fieldProp.get(project);
props.remove(property);
fieldProp.setAccessible(false);
} catch (Exception e) {
project.log("I got caught with my hand in the cookie jar: " + e);
project.setProperty(property, "");
}
I can access the properties object, but only in jdk 1.2+. The API I need
to access a private field is java.lang.reflect.AccessableObject, which
wasn't present in JDK 1.1. So I am at a crossroads... and what I am
leaning towards is to drop JDK 1.1 support. It kinda works but will be
rather broken for most install tasks. The other option is to try and add a
removeProperty method to the Project class, but I would either need to
fork it or get it into Ant 1.6. Forking for a legitamite API reason is
just as unpallitable to me as forking for political reasons. As for the
other path I bet that a bug for adding a removeProperty method would get
shot down for design reasons, and I couldn't say I'de blame them on that
one either. Oh well... |