+1. We had a brief discussion with Dzmitry to that extent last night. Here is 
an extract from that chat:

> Generated classes (the ones with _XXX) are made from ObjEntities, so if we 
> can use an alg. based on ObjEntity state, I think that should be enough just 
> need to account for all its parts (superclass, objattribute names and types; 
> objrelationship names and types)

So yeah, IMO it does have to be like hashcode of sorts based on ObjEntity 
state...

Andrus

On Oct 4, 2011, at 2:53 AM, Mike Kienenberger wrote:

> No, it should be more clever than that.  Otherwise, every time you
> regenerate the template, the generated code will change even if
> nothing else had changed.   That will also break serialization.
> 
> Ideally, it should return the same number whenever the same fields and
> types are used for the generated class.
> 
> Maybe build the number by iterating over the attributes and
> relationships and feeding it into
> org.apache.commons.lang.builder.HashCodeBuilder, basing it on the
> order and type
> 
> 
> On Mon, Oct 3, 2011 at 7:41 PM, Ari Maniatis (Commented) (JIRA)
> <[email protected]> wrote:
>> 
>>   [ 
>> https://issues.apache.org/jira/browse/CAY-1622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13119757#comment-13119757
>>  ]
>> 
>> Ari Maniatis commented on CAY-1622:
>> -----------------------------------
>> 
>> Do we just want to add this to the velocity templates:
>> 
>> private static final long serialVersionUID = 
>> ${random(1,9223372036854775807)};
>> 
>>> Generated classes shouldn't produce serialVersionUID compiler warning
>>> ---------------------------------------------------------------------
>>> 
>>>                Key: CAY-1622
>>>                URL: https://issues.apache.org/jira/browse/CAY-1622
>>>            Project: Cayenne
>>>         Issue Type: Bug
>>>         Components: Core Library
>>>   Affects Versions: 3.0
>>>           Reporter: Bob Harner
>>>           Priority: Minor
>>> 
>>> It is probably a good idea for Cayenne not to produce any compiler 
>>> warnings, but auto-generated entity classes always have the "The 
>>> serializable class _Foo does not declare a static final serialVersionUID 
>>> field of type long" compiler warning.
>>> The @SuppressWarnings("serial") annotation will get rid of the warnings, 
>>> but of course it is not recommended to manually update the generated  
>>> classes.
>>> Users could configure the IDE to ignore these warnings (yuk), but then 
>>> other team members will still see them.
>>> Another option is to for users to set up a custom velocity template to 
>>> include this annotation.
>>> But the best solution would be for Cayenne to either automatically generate 
>>> either the serialVersionUID itself or the @SuppressWarnings("serial") 
>>> annotation that suppresses the compiler warning.
>> 
>> --
>> This message is automatically generated by JIRA.
>> If you think it was sent incorrectly, please contact your JIRA 
>> administrators: 
>> https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
>> For more information on JIRA, see: http://www.atlassian.com/software/jira
>> 
>> 
>> 
> 

Reply via email to