You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@syncope.apache.org by "Dmitriy B. (Jira)" <ji...@apache.org> on 2020/01/14 15:22:00 UTC

[jira] [Updated] (SYNCOPE-1533) Broken backward compatibilty because of changes in Equals and HashCode methods in TOs

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

Dmitriy B. updated SYNCOPE-1533:
--------------------------------
    Description: 
Starting from Syncope 2.1.X the contract of *equals* and *hashCode *methods has changed in transfer objects (TOs). It was done to improve the performance as previously they used the reflection. Some of models have an explicit declaration of equals and hashCode and the behavior remained as in 2.0.X version of Apache Syncope.

Here is the list of models for which the calculation of equals and hashCode has changed:
1. org.apache.syncope.client.console.widgets.reconciliation.Any
2. org.apache.syncope.client.console.widgets.reconciliation.Anys
3. org.apache.syncope.client.console.widgets.reconciliation.Misaligned
4. org.apache.syncope.client.console.widgets.reconciliation.Missing
5. org.apache.syncope.client.console.widgets.reconciliation.ReconciliationReport
6. org.apache.syncope.common.lib.info.PlatformInfo
7. org.apache.syncope.common.lib.info.SystemInfo
8. org.apache.syncope.common.lib.log.LogAppender
9. org.apache.syncope.common.lib.patch.ResourceDeassociationPatch
10. org.apache.syncope.common.lib.policy.DefaultAccountRuleConf
11. org.apache.syncope.common.lib.policy.PolicyTO
12. org.apache.syncope.common.lib.policy.AccountPolicyTO
13. org.apache.syncope.common.lib.policy.PasswordPolicyTO
14. org.apache.syncope.common.lib.policy.ProvisioningPolicyTO
15. org.apache.syncope.common.lib.policy.PullPolicyTO
16. org.apache.syncope.common.lib.report.AbstractAnyReportletConf
17. org.apache.syncope.common.lib.report.AbstractReportletConf 
18. org.apache.syncope.common.lib.report.AuditReportletConf
19. org.apache.syncope.common.lib.report.GroupReportletConf
20. org.apache.syncope.common.lib.report.ReconciliationReportletConf
21. org.apache.syncope.common.lib.report.StaticReportletConf
22. org.apache.syncope.common.lib.report.UserReportletConf
23. org.apache.syncope.common.lib.to.AccessTokenTO
24. org.apache.syncope.common.lib.to.AnyTypeClassTO
25. org.apache.syncope.common.lib.to.AnyTypeTO
26. org.apache.syncope.common.lib.to.CamelMetrics
27. org.apache.syncope.common.lib.to.CamelRouteTO
28. org.apache.syncope.common.lib.to.ConnIdObjectClassTO
29. org.apache.syncope.common.lib.to.ConnInstanceTO
30. org.apache.syncope.common.lib.to.ConnPoolConfTO
31. org.apache.syncope.common.lib.to.DomainTO
32. org.apache.syncope.common.lib.to.DynRealmTO
33. org.apache.syncope.common.lib.to.ErrorTO
34. org.apache.syncope.common.lib.to.ItemTO
35. org.apache.syncope.common.lib.to.JobTO
36. org.apache.syncope.common.lib.to.MailTemplateTO
37. org.apache.syncope.common.lib.to.MappingTO
38. org.apache.syncope.common.lib.to.OIDCLoginRequestTO
39. org.apache.syncope.common.lib.to.OIDCLoginResponseTO
40. org.apache.syncope.common.lib.to.OIDCLogoutRequestTO
41. org.apache.syncope.common.lib.to.OIDCProviderTO
42. org.apache.syncope.common.lib.to.OrgUnitTO
43. org.apache.syncope.common.lib.to.ProvisionTO
44. org.apache.syncope.common.lib.to.RealmTO
45. org.apache.syncope.common.lib.to.ReconStatus
46. org.apache.syncope.common.lib.to.RelationshipTypeTO
47. org.apache.syncope.common.lib.to.ReportTemplateTO
48. org.apache.syncope.common.lib.to.ResourceTO
49. org.apache.syncope.common.lib.to.RoleTO
50. org.apache.syncope.common.lib.to.SAML2IdPTO
51. org.apache.syncope.common.lib.to.SAML2LoginResponseTO
52. org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO
53. org.apache.syncope.common.lib.to.SAML2RequestTO
54. org.apache.syncope.common.rest.api.beans.AbstractQuery
55. org.apache.syncope.common.rest.api.beans.AccessTokenQuery
56. org.apache.syncope.common.rest.api.beans.AnyQuery
57. org.apache.syncope.common.rest.api.beans.ExecQuery
58. org.apache.syncope.common.rest.api.beans.ExecuteQuery
59. org.apache.syncope.common.rest.api.beans.SchemaQuery
60. org.apache.syncope.common.rest.api.beans.TaskQuery
61. org.apache.syncope.fit.core.reference.TestAccountRuleConf
62. org.apache.syncope.fit.core.reference.TestPasswordRuleConf


To preserve the previous behavior and don't break the backward compatibility *equals* and *hashCode* should be overwritten using the for _org.apache.commons.lang3.builder.EqualsBuilder_ and _org.apache.commons.lang3.builder.HashCodeBuilder_ .


  was:
Starting from Syncope 2.1.X the contract of *equals* and *hashCode *methods has changed in transfer objects (TOs). It was done to improve the performance as previously they used the reflection. Some of models have an explicit declaration of equals and hashCode and the behavior remained as in 2.0.X version of Apache Syncope.

Here is the list of models for which the calculation of equals and hashCode has changed:
1. org.apache.syncope.client.console.widgets.reconciliation.Any
2. org.apache.syncope.client.console.widgets.reconciliation.Anys
3. org.apache.syncope.client.console.widgets.reconciliation.Misaligned
4. org.apache.syncope.client.console.widgets.reconciliation.Missing
5. org.apache.syncope.client.console.widgets.reconciliation.ReconciliationReport
6. org.apache.syncope.common.lib.info.PlatformInfo
7. org.apache.syncope.common.lib.info.SystemInfo
8. org.apache.syncope.common.lib.log.LogAppender
9. org.apache.syncope.common.lib.patch.ResourceDeassociationPatch
10. org.apache.syncope.common.lib.policy.DefaultAccountRuleConf
11. org.apache.syncope.common.lib.policy.PolicyTO
12. org.apache.syncope.common.lib.policy.AccountPolicyTO
13. org.apache.syncope.common.lib.policy.PasswordPolicyTO
14. org.apache.syncope.common.lib.policy.ProvisioningPolicyTO
15. org.apache.syncope.common.lib.policy.PullPolicyTO
16. org.apache.syncope.common.lib.report.AbstractAnyReportletConf
17. org.apache.syncope.common.lib.report.AbstractReportletConf 
18. org.apache.syncope.common.lib.report.AuditReportletConf
19. org.apache.syncope.common.lib.report.GroupReportletConf
20. org.apache.syncope.common.lib.report.ReconciliationReportletConf
21. org.apache.syncope.common.lib.report.StaticReportletConf
22. org.apache.syncope.common.lib.report.UserReportletConf
23. org.apache.syncope.common.lib.to.AccessTokenTO
24. org.apache.syncope.common.lib.to.AnyTypeClassTO
25. org.apache.syncope.common.lib.to.AnyTypeTO
26. org.apache.syncope.common.lib.to.CamelMetrics
27. org.apache.syncope.common.lib.to.CamelRouteTO
28. org.apache.syncope.common.lib.to.ConnIdObjectClassTO
29. org.apache.syncope.common.lib.to.ConnInstanceTO
30. org.apache.syncope.common.lib.to.ConnPoolConfTO
31. org.apache.syncope.common.lib.to.DomainTO
32. org.apache.syncope.common.lib.to.DynRealmTO
33. org.apache.syncope.common.lib.to.ErrorTO
34. org.apache.syncope.common.lib.to.ItemTO
35. org.apache.syncope.common.lib.to.JobTO
36. org.apache.syncope.common.lib.to.MailTemplateTO
37. org.apache.syncope.common.lib.to.MappingTO
38. org.apache.syncope.common.lib.to.OIDCLoginRequestTO
39. org.apache.syncope.common.lib.to.OIDCLoginResponseTO
40. org.apache.syncope.common.lib.to.OIDCLogoutRequestTO
41. org.apache.syncope.common.lib.to.OIDCProviderTO
42. org.apache.syncope.common.lib.to.OrgUnitTO
43. org.apache.syncope.common.lib.to.ProvisionTO
44. org.apache.syncope.common.lib.to.RealmTO
45. org.apache.syncope.common.lib.to.ReconStatus
46. org.apache.syncope.common.lib.to.RelationshipTypeTO
47. org.apache.syncope.common.lib.to.ReportTemplateTO
48. org.apache.syncope.common.lib.to.ResourceTO
49. org.apache.syncope.common.lib.to.RoleTO
50. org.apache.syncope.common.lib.to.SAML2IdPTO
51. org.apache.syncope.common.lib.to.SAML2LoginResponseTO
52. org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO
53. org.apache.syncope.common.lib.to.SAML2RequestTO
54. org.apache.syncope.common.rest.api.beans.AbstractQuery
55. org.apache.syncope.common.rest.api.beans.AccessTokenQuery
56. org.apache.syncope.common.rest.api.beans.AnyQuery
57. org.apache.syncope.common.rest.api.beans.ExecQuery
58. org.apache.syncope.common.rest.api.beans.ExecuteQuery
59. org.apache.syncope.common.rest.api.beans.SchemaQuery
60. org.apache.syncope.common.rest.api.beans.TaskQuery
61. org.apache.syncope.fit.core.reference.TestAccountRuleConf
62. org.apache.syncope.fit.core.reference.TestPasswordRuleConf


To preserve the previous behavior and don't break the backward compatibility *equals *and *hashCode* should be overwritten using the for _org.apache.commons.lang3.builder.EqualsBuilder_ and _org.apache.commons.lang3.builder.HashCodeBuilder_ .



> Broken backward compatibilty because of changes in Equals and HashCode methods in TOs
> -------------------------------------------------------------------------------------
>
>                 Key: SYNCOPE-1533
>                 URL: https://issues.apache.org/jira/browse/SYNCOPE-1533
>             Project: Syncope
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.1.5
>            Reporter: Dmitriy B.
>            Priority: Major
>
> Starting from Syncope 2.1.X the contract of *equals* and *hashCode *methods has changed in transfer objects (TOs). It was done to improve the performance as previously they used the reflection. Some of models have an explicit declaration of equals and hashCode and the behavior remained as in 2.0.X version of Apache Syncope.
> Here is the list of models for which the calculation of equals and hashCode has changed:
> 1. org.apache.syncope.client.console.widgets.reconciliation.Any
> 2. org.apache.syncope.client.console.widgets.reconciliation.Anys
> 3. org.apache.syncope.client.console.widgets.reconciliation.Misaligned
> 4. org.apache.syncope.client.console.widgets.reconciliation.Missing
> 5. org.apache.syncope.client.console.widgets.reconciliation.ReconciliationReport
> 6. org.apache.syncope.common.lib.info.PlatformInfo
> 7. org.apache.syncope.common.lib.info.SystemInfo
> 8. org.apache.syncope.common.lib.log.LogAppender
> 9. org.apache.syncope.common.lib.patch.ResourceDeassociationPatch
> 10. org.apache.syncope.common.lib.policy.DefaultAccountRuleConf
> 11. org.apache.syncope.common.lib.policy.PolicyTO
> 12. org.apache.syncope.common.lib.policy.AccountPolicyTO
> 13. org.apache.syncope.common.lib.policy.PasswordPolicyTO
> 14. org.apache.syncope.common.lib.policy.ProvisioningPolicyTO
> 15. org.apache.syncope.common.lib.policy.PullPolicyTO
> 16. org.apache.syncope.common.lib.report.AbstractAnyReportletConf
> 17. org.apache.syncope.common.lib.report.AbstractReportletConf 
> 18. org.apache.syncope.common.lib.report.AuditReportletConf
> 19. org.apache.syncope.common.lib.report.GroupReportletConf
> 20. org.apache.syncope.common.lib.report.ReconciliationReportletConf
> 21. org.apache.syncope.common.lib.report.StaticReportletConf
> 22. org.apache.syncope.common.lib.report.UserReportletConf
> 23. org.apache.syncope.common.lib.to.AccessTokenTO
> 24. org.apache.syncope.common.lib.to.AnyTypeClassTO
> 25. org.apache.syncope.common.lib.to.AnyTypeTO
> 26. org.apache.syncope.common.lib.to.CamelMetrics
> 27. org.apache.syncope.common.lib.to.CamelRouteTO
> 28. org.apache.syncope.common.lib.to.ConnIdObjectClassTO
> 29. org.apache.syncope.common.lib.to.ConnInstanceTO
> 30. org.apache.syncope.common.lib.to.ConnPoolConfTO
> 31. org.apache.syncope.common.lib.to.DomainTO
> 32. org.apache.syncope.common.lib.to.DynRealmTO
> 33. org.apache.syncope.common.lib.to.ErrorTO
> 34. org.apache.syncope.common.lib.to.ItemTO
> 35. org.apache.syncope.common.lib.to.JobTO
> 36. org.apache.syncope.common.lib.to.MailTemplateTO
> 37. org.apache.syncope.common.lib.to.MappingTO
> 38. org.apache.syncope.common.lib.to.OIDCLoginRequestTO
> 39. org.apache.syncope.common.lib.to.OIDCLoginResponseTO
> 40. org.apache.syncope.common.lib.to.OIDCLogoutRequestTO
> 41. org.apache.syncope.common.lib.to.OIDCProviderTO
> 42. org.apache.syncope.common.lib.to.OrgUnitTO
> 43. org.apache.syncope.common.lib.to.ProvisionTO
> 44. org.apache.syncope.common.lib.to.RealmTO
> 45. org.apache.syncope.common.lib.to.ReconStatus
> 46. org.apache.syncope.common.lib.to.RelationshipTypeTO
> 47. org.apache.syncope.common.lib.to.ReportTemplateTO
> 48. org.apache.syncope.common.lib.to.ResourceTO
> 49. org.apache.syncope.common.lib.to.RoleTO
> 50. org.apache.syncope.common.lib.to.SAML2IdPTO
> 51. org.apache.syncope.common.lib.to.SAML2LoginResponseTO
> 52. org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO
> 53. org.apache.syncope.common.lib.to.SAML2RequestTO
> 54. org.apache.syncope.common.rest.api.beans.AbstractQuery
> 55. org.apache.syncope.common.rest.api.beans.AccessTokenQuery
> 56. org.apache.syncope.common.rest.api.beans.AnyQuery
> 57. org.apache.syncope.common.rest.api.beans.ExecQuery
> 58. org.apache.syncope.common.rest.api.beans.ExecuteQuery
> 59. org.apache.syncope.common.rest.api.beans.SchemaQuery
> 60. org.apache.syncope.common.rest.api.beans.TaskQuery
> 61. org.apache.syncope.fit.core.reference.TestAccountRuleConf
> 62. org.apache.syncope.fit.core.reference.TestPasswordRuleConf
> To preserve the previous behavior and don't break the backward compatibility *equals* and *hashCode* should be overwritten using the for _org.apache.commons.lang3.builder.EqualsBuilder_ and _org.apache.commons.lang3.builder.HashCodeBuilder_ .



--
This message was sent by Atlassian Jira
(v8.3.4#803005)