I have a Shale/MyFaces web app which upon logon displays a worklist.jsp which has a <t:datatable of "assignment" links. I am using tomahawk's datatable with sorting and paging with preserveDataModel as *false*. Also, I have STATE_SAVING_METHOD as client, and my WorkListManagerBean has scope of request.

My WorkListManagerBean has a ListDataModel called assignmentsModel and a List _assignments. _assignments is a List of "ShaleAssignment" objects (I know, bad name!) which implements Serializable (using default serialization).

In order to make everything work, I have had to make WorkListManagerBean implement Serializable. Seems to me I should declare _assignments and assignmentModel transient and then write methods writeObject(ObjectOutputStream) and readObject(ObjectInputStream). So, well, I did do all this, and everything seems to work fine. My question is just this: is this the correct approach or am i working too hard?

Here are the details of my writeObject and readObject methods:
private void writeObject(ObjectOutputStream s) throws IOException{
       
        ..... //do default stuff first.. then:
       
        List shaleAs = (List) assignmentsModel.getWrappedData();
        Object[] shaleAsAsArray = shaleAs.toArray();
        for (int i=0; i<shaleAsAsArray.length; i++) {
                s.writeObject(shaleAsAsArray[i]);
        }

}
private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {

        ... //do default stuff.. then:

        for (int i=0; i<size; i++) {
                shaleAssignmentsAsArray[i] = (ShaleAssignment) s.readObject();
        }
        _assignments = Arrays.asList(shaleAssignmentsAsArray);
               
        // have to sort now I think..?
        sort(_sort, _ascending);
        assignmentsModel = new ListDataModel();
        assignmentsModel.setWrappedData(_assignments);

}

Many thanks in advance for your help!
Regards,
Geeta

Reply via email to