You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by dk...@apache.org on 2011/10/04 09:57:41 UTC

svn commit: r1178712 - in /cayenne/main/trunk/framework: cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java cayenne-tools/src/main/resources/templates/v1_2/superclass.vm

Author: dkazimirchyk
Date: Tue Oct  4 07:57:40 2011
New Revision: 1178712

URL: http://svn.apache.org/viewvc?rev=1178712&view=rev
Log:
CAY-1622 Generated classes shouldn't produce serialVersionUID compiler warning

added getSerialVersionUID method to ObjEntity and updated Velocity template

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java
    cayenne/main/trunk/framework/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java?rev=1178712&r1=1178711&r2=1178712&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java Tue Oct  4 07:57:40 2011
@@ -19,6 +19,9 @@
 
 package org.apache.cayenne.map;
 
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.security.MessageDigest;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -1250,5 +1253,42 @@ public class ObjEntity extends Entity im
     public void setExcludingSuperclassListeners(boolean excludingSuperclassListeners) {
         this.excludingSuperclassListeners = excludingSuperclassListeners;
     }
+    
+    /**
+     * Returns unique id for this ObjEntity.
+     * 
+     * @since 3.1
+     */
+    public long getSerialVersionUID() throws Exception {
+        ByteArrayOutputStream bout = new ByteArrayOutputStream();
+        DataOutputStream dout = new DataOutputStream(bout);
+            
+        dout.writeUTF(getClassName());
+        
+        if (getSuperClassName() != null) {
+            dout.writeUTF(getSuperClassName());
+        }
+  
+        for (ObjAttribute attr : getAttributes()) {
+            dout.writeUTF(attr.getName());
+            dout.writeUTF(attr.getType());
+        }
+        
+        for (ObjRelationship rel : getRelationships()) {
+            dout.writeUTF(rel.getName());
+            dout.writeUTF(rel.getCollectionType() != null 
+                    ? rel.getCollectionType() : "to-one");
+        }
+
+        dout.flush();
+
+        MessageDigest md = MessageDigest.getInstance("SHA");
+        byte[] hashBytes = md.digest(bout.toByteArray());
+        long hash = 0;
+        for (int i = Math.min(hashBytes.length, 8) - 1; i >= 0; i--) {
+            hash = (hash << 8) | (hashBytes[i] & 0xFF);
+        }
+        return hash;
+    }
 
 }

Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm?rev=1178712&r1=1178711&r2=1178712&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm (original)
+++ cayenne/main/trunk/framework/cayenne-tools/src/main/resources/templates/v1_2/superclass.vm Tue Oct  4 07:57:40 2011
@@ -54,6 +54,9 @@ ${importUtils.generate()}
  */
 public abstract class ${superClassName} extends ${baseClassName} {
 
+## SerialVersionUID
+    private static final long serialVersionUID = ${object.SerialVersionUID}L;
+
 ## Create property names
 #foreach( $attr in ${object.DeclaredAttributes} )
     public static final String ${stringUtils.capitalizedAsConstant($attr.Name)}_PROPERTY = "${attr.Name}";