vlsi commented on PR #693:
URL: https://github.com/apache/jmeter/pull/693#issuecomment-1301792127

   @undera do you have any opinion on 
org.apache.jmeter.testelement.AbstractTestElement#equals ?
   
   Currently `AbstractTestElement#hashCode` uses `identityHashCode`, so it was 
supposed to use reference equality when being a part of hashMap.
   However, `AbstractTestElement#equals` used `propMap.equal(other.propMap)`, 
so if someone accidentally puts `TestElement` in a `HashMap`, then they could 
get wrong results if hashCode values accidentally collide.
   
   In this PR, I tried replacing the corresponding `HashMap` usages in JMeter 
with `IdentityHashMap`. It turns out it required many changes. The "good" part 
is that it keeps backward compatibility.
   However, all the users would have to figure out and perform the same 
replacements.
   
   There's another possibility: change `AbstractTestElement#equals` to `final 
equals(Object o) { return this == o; }`.
   Then it would automatically support `AbstractTestElement` in `HashMap` and 
`ConcurrentHashMap`.
   At the same time we could add `AbstractTestElement#contentEquals` for those 
who need to compare contents of the `AbstractTestElement` instead of their 
identity.
   
   It looks like making `AbstractTestElement#equals` to compare object identity 
(this==that) would break backward compatibility (e.g. if someone used .equals 
to compare test element contents), however, it would automatically support 
`TestElements` in `Set<...>`, `Map<...`. 
   
   WDYT?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@jmeter.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to