I think it would be an improvement to combine these doPrivileged() blocks
as suggested, though your patch needs work Bernd. For instance,
the multi-catch doesn't work. Also the PrivilegedAction<> type is wrong.
If someone wants to update it, then we can use that. Otherwise, we'll
go with the original suggested change.
Thanks
Michael
On 17/04/14 21:28, Bernd Eckenfels wrote:
Am Thu, 17 Apr 2014 21:50:23 +0200
schrieb Bernd Eckenfels <bernd-2...@eckenfels.net>:
Hello,
I would propose to use Integer.valueOf(tmp) instead, but looking at
the context I think it is even better to skip this and the following
null check with Integer.parseInt().
This is even shorter and it reduces the privileged actions invocations:
Integer tmp = java.security.AccessController.doPrivileged (
new PrivilegedAction<String>() {
public String run() {
try {
String tmpString = Security.getProperty(cachePolicyProp);
if (tmpString != null) return Integer.valueOf(tmpString);
} catch (NumberFormatException | IllegalArgumentException
ignored) { }
try {
return Integer.getInteger(cachePolicyPropFallback);
} catch (NumberFormatException | IllegalArgumentException
ignored) { }
return null;
}
});
if (tmp != null) {
cachePolicy = tmp.intValue();
if (cachePolicy < 0) {
cachePolicy = FOREVER;
}
propertySet = true;
} else {
/* No properties defined for positive caching. If there is no
* security manager then use the default positive cache value. */
if (System.getSecurityManager() == null) {
cachePolicy = DEFAULT_POSITIVE;
}
}
NB: this will