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)

Reply via email to