Re: serialization issue

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu May 18 2006 - 11:59:24 EDT

  • Next message: Thilko Richter: "AW: Default domain in cayenne.xml"

    On May 18, 2006, at 10:58 AM, Tomi NA wrote:

    > Hmm...I'm sorry to hear that. The problem is, I have a panel and a
    > bean (presenter, model, if you will) and I bind them using jgoodies
    > binding. Some of the bean fields are cayenne DataObjects. I have these
    > kinds of panels all over the app, but I need to serialize just a
    > couple of them: the point is to save a part of the frame (panel)
    > state.

    Ok, then serializaing the entire context is indeed inappropriate.
    Just serialize the objects (note that 'objectContext' is a transient
    field, so a serialized object won't drag a DC with it).

    > How should I go about serializing/deserializing such objects? All I
    > have at my disposal right now is a stream to which I can write to or
    > read from, depending on whether I'm serializing or deserializing. I'm
    > not clear on what happens when I write an object to such a stream, no
    > matter the fact I have a serialized DataContext.

    A simple trick would be to use thread-bound DC and create
    "readResolve" method in a custom DO superclass that reattaches itself
    to the thread context (or rather returns a substitute object local to
    the current DC):

    private Object readResolve() throws ObjectStreamException {
        DataContext dc = DataContext.getThreadDataContext();
        return dc == null ? this : dc.localObject(getObjectId(), this);
    }

    Andrus



    This archive was generated by hypermail 2.0.0 : Thu May 18 2006 - 11:59:49 EDT