Re: Hollow Objects after sending them via JMS

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Mon Nov 26 2007 - 07:10:31 EST

  • Next message: Andrus Adamchik: "Re: Hollow Objects after sending them via JMS"

    Hi Detlef,

    I guess the easiest way to handle this is to restore default Java
    serialization behavior, overriding CayenneDataObject context based
    deserialization. E.g. you may use the following class as a customer
    superclass of all your entity classes:

    public class SerializableDO extends CayenneDataObject {

            private void writeObject(ObjectOutputStream out) throws IOException {
                    out.writeObject(values);
                    out.writeObject(objectId);
            }

            private void readObject(ObjectInputStream in) throws IOException,
                            ClassNotFoundException {

                    this.values = (Map) in.readObject();
                    this.objectId = (ObjectId) in.readObject();
                    this.persistenceState = PersistenceState.TRANSIENT;
            }
    }

    Andrus

    On Nov 22, 2007, at 11:49 AM, Detlef Burt wrote:

    > Hello List,
    >
    > as you might expect, i got a small problem.
    >
    > The scenario is the following:
    >
    > I have a framework that communicates completely via OpenJMS. It has
    > a "PersistenceLayer" that can be configured to use different
    > PersistenceFrameworks. One of these is Cayenne.
    >
    > The Program flow is the following:
    > 1. Send a request to the server (in my Testcase: "get Extents of
    > Class X from Database")
    > 2. The PersistenceLayer handles the request and returns the correct
    > results from the Database in a Vector --> Up to this point,
    > everything is fine
    > 3. Send the Vector back to the Application that requested the Data.
    >
    > Now this is where my Problem is:
    > I get a Vector with the right amount of Entries and they all have
    > the right class, but all the Objects are hollow and return null for
    > every property/class field.
    >
    > I found out, that I can keep the Objects contents when I call
    > DataContext.unregisterObjects, but after reading some more posts on
    > this group, I do remember reading something about unregisterObjects
    > not being a good solution. Quoting Andrus:
    >
    > "In any event I would advise against using "unregisterObjects",
    > unless you are sure there are no remaining cached objects that point
    > to unregistered objects via a relationship."
    >
    > So my question is:
    > Is there a more elegant solution to my problem? I really would like
    > to keep all the Data from the Objects and maybe even the ObjectId of
    > the Objects to be able to more easily reference the Objects in the
    > Database.
    >
    > Thanks in Advance,
    > Detlef
    >
    >



    This archive was generated by hypermail 2.0.0 : Mon Nov 26 2007 - 07:11:03 EST