Hello,
Context: I am writing some unit tests for our product that require system
properties (like java.ext.dirs) to be temporarily fiddled with. Now my code
looks like this:
public void testJavaExtDirDoesNotExist() {
String saveJavaExtDirs = SystemUtils.JAVA_EXT_DIRS;
try {
String testJavaExtDirs = "...";
System.setProperty("java.ext.dirs", testJavaExtDirs);
// The real test starts here...
} finally {
System.setProperty("java.ext.dirs", saveJavaExtDirs);
}
}
Issue #1: Add SystemUtils.setX?
--------
Instead of:
System.setProperty("java.ext.dirs", testJavaExtDirs);
I wonder if this would be better:
SystemUtils.setJavaExtDirs(testJavaExtDirs);
Seems nicer, yes?
Issue #2: SystemUtils out of sync.
--------
As soon you do:
System.setProperty("java.ext.dirs", testJavaExtDirs);
Then SystemUtils.JAVA_EXT_DIRS lies.
Proposal 2a:
At least, the Javadoc has to be updated to something nasty like: "The value
of this constant is set when this class is first loaded."
Proposal 2b:
Add SystemUtils.getJavaExtDirs() and other APIs which do not cache and make
JAVA_EXT_DIRS and others use such APIs.
Proposal 3b:
Add constants for the property names like: JAVA_EXT_DIRS_KEY =
"java.ext.dirs".
?
Gary