Documentation suggestion

Karl Wettin <[email protected]>
Newsgroups gmane.comp.java.prevayler
Message-ID <[email protected]>
Even though it's not that hard to figure out by one self, I think it  
might help some users if at least one of the example projects (or if  
the Wiki at some smart place) as built to show the pitfalls of  
java.io.Serializable and explained how one can achieve backwards  
compatibillity using local versioning of domain objects with  
Externalizable. It makes life so much easier for people such as me  
that have an evolving domain class model.

Dry-coded example:

public abstract class LegalPerson implements Serializable,  
Externalizable {

   private static final long serialVersionUID = 1l; // never change this

   private String id;
   private String name;

   @Override
   public void writeExternal(ObjectOutput objectOutput) throws  
IOException {
     objectOutput.writeInt(1); // version
     objectOutput.writeObject(id);
     objectOutput.writeObject(name);
   }

   @Override
   public void readExternal(ObjectInput objectInput) throws  
IOException, ClassNotFoundException {
     int version = objectInput.readInt();
     if (version == 1) {
       id = (String)objectInput.readObject();
       name = (String)objectInput.readObject();
     } else {
       throw new IOException("Unknown local version: " + version);
     }
   }
}

public abstract class Organization extends LegalPerson {

   private static final long serialVersionUID = 1l; // never change this

   private String organizationNumber;

   @Override
   public void writeExternal(ObjectOutput objectOutput) throws  
IOException {
     super.writeExternal(objectOutput);

     objectOutput.writeInt(1); // version
     objectOutput.writeObject(organizationNumber);
   }

   @Override
   public void readExternal(ObjectInput objectInput) throws  
IOException, ClassNotFoundException {
     super.readExternal(objectInput);

     int version = objectInput.readInt();
     if (version == 1) {
       organizationNumber = (String)objectInput.readObject();
     } else {
       throw new IOException("Unknown local version: " + version);
     }
   }
}


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
To unsubscribe go to the end of this page: http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
_______________________________________________
"Databases in Memoriam" -- http://www.prevayler.org
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.