[ https://issues.apache.org/jira/browse/DERBY-6885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15255702#comment-15255702 ]
Bryan Pendleton commented on DERBY-6885: ---------------------------------------- Thanks for the cleanup. I desk-checked and proofread the code, and it all looks great. +1 If you have a minute, perhaps you could elaborate on why, in this part of the change, you were able to change the variable "success" from Boolean to boolean, but the PrivilegedAction itself is still a PrivilegedAction<Boolean>? Is it because boolean is a primitive, not a "true" type, while Boolean is a true type? {code} - Boolean success = AccessController.doPrivileged( - new PrivilegedAction<Boolean>() { - public Boolean run() { - return ReuseFactory.getBoolean(FileUtil.copyFile( - dataFactory.getStorageFactory(), from, to)); - } - }); - - if (!success.booleanValue()) { + PrivilegedAction<Boolean> pa = () -> + FileUtil.copyFile(dataFactory.getStorageFactory(), from, to); + boolean success = AccessController.doPrivileged(pa); + if (!success) { {code} I guess that the compiler is seeing an assignment {code} boolean = Boolean {code} in the call to doPrivileged(), and is automatically generating a call to booleanValue() to extract the boolean value from the Boolean object into the boolean primitive? I suppose this is why we can't remove the "success" variable entirely, in favor of: {code} + PrivilegedAction<Boolean> pa = () -> + FileUtil.copyFile(dataFactory.getStorageFactory(), from, to); + if (! AccessController.doPrivileged(pa) ) { {code} because a Boolean can't be simply tested like that in the "if" statement, while a boolean can? > Remove ReuseFactory > ------------------- > > Key: DERBY-6885 > URL: https://issues.apache.org/jira/browse/DERBY-6885 > Project: Derby > Issue Type: Improvement > Components: Services > Affects Versions: 10.13.0.0 > Reporter: Knut Anders Hatlen > Assignee: Knut Anders Hatlen > Priority: Minor > Attachments: d6885.diff > > > ReuseFactory used to help reduce object allocations when converting > numbers/booleans from primitive types to object types. After DERBY-2383 and > DERBY-6230, the ReuseFactory methods are just wrappers around standard > library methods such as Integer.valueOf() and Long.valueOf(). > Callers could just as easily call the corresponding valueOf() method > directly, or rely on auto-boxing. Both ways use the same cache as > ReuseFactory currently does, so ReuseFactory has no purpose anymore. > One exception: ReuseFactory.getZeroLenByteArray() is still used and provides > value, as it avoids the allocation cost when an empty byte array is needed. > The ArrayUtil class is probably just as good a home for it, so I propose we > move it there and remove the ReuseFactory class. -- This message was sent by Atlassian JIRA (v6.3.4#6332)