Update of /cvsroot/xdoclet/xdoclet/modules/jdo/src/xdoclet/modules/jdo
In directory 
sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv2572/modules/jdo/src/xdoclet/modules/jdo

Modified Files:
        JdoObjectIdGeneratorTagsHandler.java 
Log Message:
Modification by Marc Klinger: implemented creation of serialVersionUID in 
generated ObjectID classes

Index: JdoObjectIdGeneratorTagsHandler.java
===================================================================
RCS file: 
/cvsroot/xdoclet/xdoclet/modules/jdo/src/xdoclet/modules/jdo/JdoObjectIdGeneratorTagsHandler.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** JdoObjectIdGeneratorTagsHandler.java        20 Oct 2006 03:50:55 -0000      
1.7
--- JdoObjectIdGeneratorTagsHandler.java        24 Jul 2007 17:45:07 -0000      
1.8
***************
*** 8,11 ****
--- 8,12 ----
  import java.io.File;
  import java.io.FileReader;
+ import java.io.Serializable;
  import java.util.ArrayList;
  import java.util.Collections;
***************
*** 307,310 ****
--- 308,361 ----
  
      /**
+      * @param attributes
+      * @return                      Returns <tt>null</tt> or the serial 
version uid expression.
+      * @exception XDocletException
+      */
+     public String serialVersionUID(Properties attributes) throws 
XDocletException
+     {
+         XDoc classDoc = getCurrentClass().getDoc();
+         String serialVerisionUID = 
classDoc.getTagAttributeValue("jdo.create-objectid-class", 
"serial-version-uid");
+ 
+         if (serialVerisionUID == null)
+             serialVerisionUID = "auto";
+ 
+         String number;
+ 
+         if ("none".equals(serialVerisionUID))
+             return null;
+         else if ("default".equals(serialVerisionUID))
+             number = "1L";
+         else if ("auto".equals(serialVerisionUID)) {
+             StringBuffer sb = new StringBuffer();
+             List fields = getCurrentClass().getFields();
+ 
+             for (Iterator iter = fields.iterator(); iter.hasNext(); ) {
+                 XField field = (XField) iter.next();
+ 
+                 if (!field.isStatic() && !field.isTransient()) {
+                     sb.append(field.getModifiers());
+                     sb.append(' ');
+                     sb.append(field.getType());
+                     sb.append(' ');
+                     sb.append(field.getName());
+                     sb.append('?');
+                 }
+             }
+             System.out.println("serial version suid String: " + 
sb.toString());
+ 
+             int splitIdx = sb.length() / 2;
+             int hash1 = sb.substring(0, splitIdx).hashCode();
+             int hash2 = sb.substring(splitIdx).hashCode();
+             long hash = (long) hash1 | (((long) hash2) << 32);
+ 
+             System.out.println("serial version uid: " + hash);
+             number = String.valueOf(hash) + "L";
+         }
+         else
+             number = serialVerisionUID;
+         return "private static final long serialVersionUID = " + number + ";";
+     }
+ 
+     /**
       * Additional code can be pasted into the objectid-class.
       *


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
xdoclet-devel mailing list
xdoclet-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to