[
https://issues.apache.org/jira/browse/OFBIZ-9453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16078019#comment-16078019
]
Kyra Pritzel-Hentley commented on OFBIZ-9453:
---------------------------------------------
While reviewing the lines of code where the DM_BOOLEAN_CTOR bug was found, I
had to wonder why a Boolean variable has to be converted to a primitive boolean
just to be given as a parameter to the Boolean constructor (see first two lines
in try-block, here the variable is captureResult). It seems like the
constructor is used for the case that the variable is null. But is it
responsible to induce an exception instead of checking the variable with an
if-statement? It would be great to have some input on the idea behind this
logic.
{code:java}
private static void processCaptureTransResult(Map<String, Object> request,
Map<String, Object> reply, Map<String, Object> results) {
AuthorizeResponse ar = (AuthorizeResponse)
reply.get("authorizeResponse");
try {
Boolean captureResult = (Boolean) reply.get("authResult");
results.put("captureResult", new
Boolean(captureResult.booleanValue()));
.............
if (captureResult.booleanValue()) { //passed
results.put("captureCode", ar.getAuthorizationCode());
if (BigDecimal.ZERO.compareTo(ar.getAmount()) == 0) {
results.put("captureAmount", getXAmount(request));
} else {
results.put("captureAmount", ar.getAmount());
}
} else {
results.put("captureAmount", BigDecimal.ZERO);
}
} catch (Exception ex) {
Debug.logError(ex, module);
results.put("captureAmount", BigDecimal.ZERO);
}
..............
}
{code}
> [FB] Package org.apache.ofbiz.accounting.thirdparty.authorizedotnet
> -------------------------------------------------------------------
>
> Key: OFBIZ-9453
> URL: https://issues.apache.org/jira/browse/OFBIZ-9453
> Project: OFBiz
> Issue Type: Sub-task
> Components: accounting
> Affects Versions: Trunk
> Reporter: Kyra Pritzel-Hentley
> Priority: Minor
>
> AIMPaymentServices.java:648: 679: 705: 732: 758, DM_BOOLEAN_CTOR
> * Dm:
> org.apache.ofbiz.accounting.thirdparty.authorizedotnet.AIMPaymentServices.processAuthTransResult(Map,
> Map, Map) invokes inefficient Boolean constructor; use Boolean.valueOf(...)
> instead
> Creating new instances of java.lang.Boolean wastes memory, since Boolean
> objects are immutable and there are only two useful values of this type. Use
> the Boolean.valueOf() method (or Java 1.5 autoboxing) to create Boolean
> objects instead.
> AuthorizeResponse.java:131, DMI_INVOKING_TOSTRING_ON_ARRAY
> * USELESS_STRING: Invocation of toString on AuthorizeResponse.response in
> org.apache.ofbiz.accounting.thirdparty.authorizedotnet.AuthorizeResponse.toString()
> The code invokes toString on an array, which will generate a fairly useless
> result such as [C@16f0472. Consider using Arrays.toString to convert the
> array into a readable String that gives the contents of the array. See
> Programming Puzzlers, chapter 3, puzzle 12.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)