[ 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) |
Free forum by Nabble | Edit this page |