[ 
https://issues.apache.org/jira/browse/OFBIZ-9564?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dennis Balkir updated OFBIZ-9564:
---------------------------------
    Attachment: OFBIZ-9564_org.apache.ofbiz.base.lang_bugfixes.patch

- implemented method {{hashCode()}} because method {{equals()}} was implemented
- changed {{Exception}} to {{RuntimeException}} because no exception was thrown 
and the only occuring exception coud be a runtimeexception

> [FB] Package org.apache.ofbiz.base.lang
> ---------------------------------------
>
>                 Key: OFBIZ-9564
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-9564
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: base
>    Affects Versions: Trunk
>            Reporter: Dennis Balkir
>            Priority: Minor
>         Attachments: OFBIZ-9564_org.apache.ofbiz.base.lang_bugfixes.patch
>
>
> - ComparableRange.java:70, HE_EQUALS_USE_HASHCODE
> HE: org.apache.ofbiz.base.lang.ComparableRange defines equals and uses 
> Object.hashCode()
> This class overrides equals(Object), but does not override hashCode(), and 
> inherits the implementation of hashCode() from java.lang.Object (which 
> returns the identity hash code, an arbitrary value assigned to the object by 
> the VM).  Therefore, the class is very likely to violate the invariant that 
> equal objects must have equal hashcodes.
> If you don't think instances of this class will ever be inserted into a 
> HashMap/HashTable, the recommended hashCode implementation to use is:
> public int hashCode() {
>   assert false : "hashCode not designed";
>   return 42; // any arbitrary constant will do
>   }
> - ComparableRange.java:76, REC_CATCH_EXCEPTION
> REC: Exception is caught when Exception is not thrown in 
> org.apache.ofbiz.base.lang.ComparableRange.equals(Object)
> This method uses a try-catch block that catches Exception objects, but 
> Exception is not thrown within the try block, and RuntimeException is not 
> explicitly caught. It is a common bug pattern to say try { ... } catch 
> (Exception e) { something } as a shorthand for catching a number of types of 
> exception each of whose catch blocks is identical, but this construct also 
> accidentally catches RuntimeException as well, masking potential bugs.
> A better approach is to either explicitly catch the specific exceptions that 
> are thrown, or to explicitly catch RuntimeException exception, rethrow it, 
> and then catch all non-Runtime Exceptions, as shown below:
>   try {
>     ...
>   } catch (RuntimeException e) {
>     throw e;
>   } catch (Exception e) {
>     ... deal with all non-runtime exceptions ...
>   }



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to