Shan Jiang created COMMONSSITE-184:
--------------------------------------
Summary: `Arg`, `Msg`, `Var`, `Field` — `clone()` copies state but
`equals()` uses identity comparison
Key: COMMONSSITE-184
URL: https://issues.apache.org/jira/browse/COMMONSSITE-184
Project: Apache Commons All
Issue Type: Bug
Reporter: Shan Jiang
### Summary
Four classes in `org.apache.commons.validator` implement `Cloneable` with
correct `clone()`
implementations that copy all fields, but do not override `equals()` or
`hashCode()`.
This means `x.clone().equals(x)` always returns `false` (identity comparison),
violating
the `clone()` contract:
> "By convention, the object returned by this method should be equal to this
> object."
### Affected classes
| Class | clone() copies |
|-------|---------------|
| `Arg` | name, key, position, bundle, resource |
| `Msg` | name, key, bundle, resource |
| `Var` | name, value, jsType, bundle, resource |
| `Field` | property, indexedProperty, indexedListProperty, key, args, depends,
... |
### How this was found
Detected by an automated JDK conformance oracle
(`ObjectOracles.checkCloneEqualsConsistency`).
---
--
This message was sent by Atlassian Jira
(v8.20.10#820010)