From yzaspits at redhat.com Sun May 25 08:33:31 2014 Content-Type: multipart/mixed; boundary="===============1279258847371747173==" MIME-Version: 1.0 From: Yevgeny Zaspitsky To: devel at ovirt.org Subject: [ovirt-devel] Implementing equals & hashCode methods Date: Sun, 25 May 2014 08:33:31 -0400 Message-ID: <2071271020.6882950.1401021211138.JavaMail.zimbra@redhat.com> In-Reply-To: 744032381.6879500.1401018873883.JavaMail.zimbra@redhat.com --===============1279258847371747173== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_6882949_1833668210.1401021211136 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: 7bit Hi All, = Recently I reviewed a patch that adds a new business entity to the engine. = The entity class has the following members: = * id = * data center id = * name = * type = * some other properties that do not belong to the entity key = The equals & hashCode methods were implemented in a way that include all me= mbers. = I asked the patch author to change that, so it'll include only business key= (data center id, name and type), which define the entity uniqueness. = Also I found that many other business entities are implemented in a similar= way (include all class members in equals & hashCode). = I'm a new to oVirt, so I'd like to ask your opinion on the issue. = 1. Do you agree with my approach on equals & hashCode. = 2. If you agree with my approach in general, should we implement it in = the new introduced code or should we adhere to the old convention even we d= o not agree with it? = 3. Should we re-factor the old code (it might be dangerous as we do hav= e enough unit test coverage)? = Thanks in advance, = Yevgeny = ------=3D_Part_6882949_1833668210.1401021211136 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: quoted-printable
Hi All,

= =3D
Recently I reviewed a patch that adds a new business entity to the eng= =3D ine.
The entity class has the following members:
  • id
  • d= =3D ata center id
  • name
  • type
  • some other properties t= =3D hat do not belong to the entity key
The equals & hashCode meth= =3D ods were implemented in a way that include all members.
I ask= =3D ed the patch author to change that, so it'll include only business key (dat= =3D a center id, name and type), which define the entity uniqueness.
<= =3D div>Also I found that many other business entities are implemented in a sim= =3D ilar way (include all class members in equals & hashCode).

I'm a new to oVirt, so I'd like to ask your opinion on the= =3D issue.
  1. Do you agree with my approach on equals & ha= =3D shCode.
  2. If you agree with my approach in general, should we impleme= =3D nt it in the new introduced code or should we adhere to the old convention = =3D even we do not agree with it?
  3. Should we re-factor the old code = =3D (it might be dangerous as we do have enough unit test coverage)?

Thanks in advance,
Yevgeny
<= =3D /body> ------=3D_Part_6882949_1833668210.1401021211136-- --===============1279258847371747173== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzY4ODI5NDlfMTgzMzY2ODIxMC4xNDAxMDIxMjExMTM2CkNvbnRlbnQtVHlw ZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3 Yml0CgpIaSBBbGwsIAoKUmVjZW50bHkgSSByZXZpZXdlZCBhIHBhdGNoIHRoYXQgYWRkcyBhIG5l dyBidXNpbmVzcyBlbnRpdHkgdG8gdGhlIGVuZ2luZS4gClRoZSBlbnRpdHkgY2xhc3MgaGFzIHRo ZSBmb2xsb3dpbmcgbWVtYmVyczogCgogICAgKiBpZCAKICAgICogZGF0YSBjZW50ZXIgaWQgCiAg ICAqIG5hbWUgCiAgICAqIHR5cGUgCiAgICAqIHNvbWUgb3RoZXIgcHJvcGVydGllcyB0aGF0IGRv IG5vdCBiZWxvbmcgdG8gdGhlIGVudGl0eSBrZXkgCgpUaGUgZXF1YWxzICYgaGFzaENvZGUgbWV0 aG9kcyB3ZXJlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgaW5jbHVkZSBhbGwgbWVtYmVycy4g CkkgYXNrZWQgdGhlIHBhdGNoIGF1dGhvciB0byBjaGFuZ2UgdGhhdCwgc28gaXQnbGwgaW5jbHVk ZSBvbmx5IGJ1c2luZXNzIGtleSAoZGF0YSBjZW50ZXIgaWQsIG5hbWUgYW5kIHR5cGUpLCB3aGlj aCBkZWZpbmUgdGhlIGVudGl0eSB1bmlxdWVuZXNzLiAKQWxzbyBJIGZvdW5kIHRoYXQgbWFueSBv dGhlciBidXNpbmVzcyBlbnRpdGllcyBhcmUgaW1wbGVtZW50ZWQgaW4gYSBzaW1pbGFyIHdheSAo aW5jbHVkZSBhbGwgY2xhc3MgbWVtYmVycyBpbiBlcXVhbHMgJiBoYXNoQ29kZSkuIAoKSSdtIGEg bmV3IHRvIG9WaXJ0LCBzbyBJJ2QgbGlrZSB0byBhc2sgeW91ciBvcGluaW9uIG9uIHRoZSBpc3N1 ZS4gCgoKICAgIDEuIERvIHlvdSBhZ3JlZSB3aXRoIG15IGFwcHJvYWNoIG9uIGVxdWFscyAmIGhh c2hDb2RlLiAKICAgIDIuIElmIHlvdSBhZ3JlZSB3aXRoIG15IGFwcHJvYWNoIGluIGdlbmVyYWws IHNob3VsZCB3ZSBpbXBsZW1lbnQgaXQgaW4gdGhlIG5ldyBpbnRyb2R1Y2VkIGNvZGUgb3Igc2hv dWxkIHdlIGFkaGVyZSB0byB0aGUgb2xkIGNvbnZlbnRpb24gZXZlbiB3ZSBkbyBub3QgYWdyZWUg d2l0aCBpdD8gCiAgICAzLiBTaG91bGQgd2UgcmUtZmFjdG9yIHRoZSBvbGQgY29kZSAoaXQgbWln aHQgYmUgZGFuZ2Vyb3VzIGFzIHdlIGRvIGhhdmUgZW5vdWdoIHVuaXQgdGVzdCBjb3ZlcmFnZSk/ IAoKVGhhbmtzIGluIGFkdmFuY2UsIApZZXZnZW55IAoKLS0tLS0tPV9QYXJ0XzY4ODI5NDlfMTgz MzY2ODIxMC4xNDAxMDIxMjExMTM2CkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0 Zi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjxodG1sPjxi b2R5PjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwgbmV3IHlvcmss IHRpbWVzLCBzZT0KcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48ZGl2Pkhp IEFsbCw8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PQo8ZGl2PlJlY2VudGx5IEkgcmV2aWV3ZWQg YSBwYXRjaCB0aGF0IGFkZHMgYSBuZXcgYnVzaW5lc3MgZW50aXR5IHRvIHRoZSBlbmc9CmluZS48 YnI+VGhlIGVudGl0eSBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBtZW1iZXJzOjxicj48dWw+PGxp PmlkPC9saT48bGk+ZD0KYXRhIGNlbnRlciBpZDwvbGk+PGxpPm5hbWU8YnI+PC9saT48bGk+dHlw ZTwvbGk+PGxpPnNvbWUgb3RoZXIgcHJvcGVydGllcyB0PQpoYXQgZG8gbm90IGJlbG9uZyB0byB0 aGUgZW50aXR5IGtleTwvbGk+PC91bD5UaGUgZXF1YWxzICZhbXA7IGhhc2hDb2RlIG1ldGg9Cm9k cyB3ZXJlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgaW5jbHVkZSBhbGwgbWVtYmVycy48YnI+ PC9kaXY+PGRpdj5JIGFzaz0KZWQgdGhlIHBhdGNoIGF1dGhvciB0byBjaGFuZ2UgdGhhdCwgc28g aXQnbGwgaW5jbHVkZSBvbmx5IGJ1c2luZXNzIGtleSAoZGF0PQphIGNlbnRlciBpZCwgbmFtZSBh bmQgdHlwZSksIHdoaWNoIGRlZmluZSB0aGUgZW50aXR5IHVuaXF1ZW5lc3MuPGJyPjwvZGl2Pjw9 CmRpdj5BbHNvIEkgZm91bmQgdGhhdCBtYW55IG90aGVyIGJ1c2luZXNzIGVudGl0aWVzIGFyZSBp bXBsZW1lbnRlZCBpbiBhIHNpbT0KaWxhciB3YXkgKGluY2x1ZGUgYWxsIGNsYXNzIG1lbWJlcnMg aW4gZXF1YWxzICZhbXA7IGhhc2hDb2RlKS48YnI+PC9kaXY+PGRpPQp2Pjxicj48L2Rpdj48ZGl2 PkknbSBhIG5ldyB0byBvVmlydCwgc28gSSdkIGxpa2UgdG8gYXNrIHlvdXIgb3BpbmlvbiBvbiB0 aGU9CiBpc3N1ZS4gPC9kaXY+PGRpdj48b2w+PGxpPkRvIHlvdSBhZ3JlZSB3aXRoIG15IGFwcHJv YWNoIG9uIGVxdWFscyAmYW1wOyBoYT0Kc2hDb2RlLjwvbGk+PGxpPklmIHlvdSBhZ3JlZSB3aXRo IG15IGFwcHJvYWNoIGluIGdlbmVyYWwsIHNob3VsZCB3ZSBpbXBsZW1lPQpudCBpdCBpbiB0aGUg bmV3IGludHJvZHVjZWQgY29kZSBvciBzaG91bGQgd2UgYWRoZXJlIHRvIHRoZSBvbGQgY29udmVu dGlvbiA9CmV2ZW4gd2UgZG8gbm90IGFncmVlIHdpdGggaXQ/PGJyPjwvbGk+PGxpPlNob3VsZCB3 ZSByZS1mYWN0b3IgdGhlIG9sZCBjb2RlID0KKGl0IG1pZ2h0IGJlIGRhbmdlcm91cyBhcyB3ZSBk byBoYXZlIGVub3VnaCB1bml0IHRlc3QgY292ZXJhZ2UpPzxicj48L2xpPjwvPQpvbD48YnI+PC9k aXY+PGRpdj5UaGFua3MgaW4gYWR2YW5jZSw8YnI+PC9kaXY+PGRpdj5ZZXZnZW55PGJyPjwvZGl2 PjwvZGl2Pjw9Ci9ib2R5PjwvaHRtbD4KLS0tLS0tPV9QYXJ0XzY4ODI5NDlfMTgzMzY2ODIxMC4x NDAxMDIxMjExMTM2LS0K --===============1279258847371747173==--