Hi Francesco and other Devs. I created an issue in Jira https://issues.apache.org/jira/projects/SYNCOPE/issues/SYNCOPE-1533. I would like to have the previous behavior of equals and hashCode methods for these models ASAP:
1.org.apache.syncope.common.lib.to.AccessTokenTO 2.org.apache.syncope.common.lib.to.AnyTypeTO 3.org.apache.syncope.common.lib.to.ConnInstanceTO 4.org.apache.syncope.common.lib.to.ConnPoolConfTO 5.org.apache.syncope.common.lib.to.DomainTO 6.org.apache.syncope.common.lib.to.ItemTO 7.org.apache.syncope.common.lib.to.MailTemplateTO 8.org.apache.syncope.common.lib.to.MappingTO 9.org.apache.syncope.common.lib.to.OrgUnitTO 10.org.apache.syncope.common.lib.to.ProvisionTO 11.org.apache.syncope.common.lib.to.RealmTO 12.org.apache.syncope.common.lib.to.ResourceTO 13.org.apache.syncope.common.lib.to.RoleTO 14.org.apache.syncope.common.rest.api.beans.AbstractQuery 15.org.apache.syncope.common.rest.api.beans.AnyQuery 16.org.apache.syncope.common.rest.api.beans.ExecQuery 17.org.apache.syncope.common.rest.api.beans.ExecuteQuery 18.org.apache.syncope.common.rest.api.beans.SchemaQuery I already create the PR for the models listed above in the PR. Kind Regards, Dmitriy Brashevets -----Original Message----- From: Francesco Chicchiriccò <ilgro...@apache.org> Sent: Friday, December 27, 2019 7:31 PM To: dev@syncope.apache.org Subject: Re: Changes in equals and hashCode contract On 24/12/19 13:41, Dmitriy Brashevets wrote: > > Hi Dev Team. > > > > In Syncope 2_0_X branch all models that extend the > /org.apache.syncope.common.lib.AbstractBaseBean /previously used > > /org.apache.commons.lang3.builder.EqualsBuilder#reflectionEquals() > /and/org.apache.commons.lang3.builder.HashCodeBuilder#reflectionHashCode() / > in the contract of Object#equals and Object#hashCode methods. > > > > Starting from 2_1_X the equals and hashCode contract has changed and is > declared explicitly in each model. > > > > I see that it was removed to fix the performance: > https://issues.apache.org/jira/browse/SYNCOPE-1392 > <https://issues.apache.org/jira/browse/SYNCOPE-1392>. > > Do you have any charts or diagrams that can demonstrate how the performance > was improved? > > > > We widely use the *syncope-client-lib* in our code and models from this > library. And I’m afraid of that we can potentially have issues in our app, > because the contract has changed. > Hi Dmitriy, you can find a whole set of articles / comments / questions / commits on the Internet about performance troubles with reflection-based builders from Apache Commons Lang. Still, we don't have any comparison for the specific change of removing such builders in favor to their non-reflective counterparts. If your code is just depending on syncope-client-lib, then no changes are expected on your side, as all required methods were changed upstream. If your code is instead extending classes from syncope-client-lib, then you'll have to provide equals() / hashcode() (and possibly toString() as well) methods to your classes, according to the parent-child pattern as shown by [1][2], for example. Hope this clarifies. Regards. [1] https://github.com/apache/syncope/blob/2_1_X/common/lib/src/main/java/org/apache/syncope/common/lib/patch/GroupPatch.java#L124-L133 [2] https://github.com/apache/syncope/blob/2_1_X/common/lib/src/main/java/org/apache/syncope/common/lib/patch/GroupPatch.java#L147-L155 -- Francesco Chicchiriccò Tirasa - Open Source Excellence http://www.tirasa.net/ Member at The Apache Software Foundation Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail http://home.apache.org/~ilgrosso/
smime.p7s
Description: S/MIME cryptographic signature