Re: Getting property type information for JBND

From: Mike Kienenberger (mkienen..mail.com)
Date: Mon May 19 2008 - 17:09:21 EDT

  • Next message: Andrus Adamchik: "[POLL] loading XML configurations from filesystem"

    If you already have a non-fault DataObject, you can do all of this by
    following the relationship: DataObject -> ObjEntity -> ObjRelationship
    -> other ObjEntity -> ObjAttributes. But I don't think this is what
    you're asking for.

    If you're starting with a Fault where all you have is the class name,
    use dataContext.getEntityResolver().lookupObjEntity(dataObject);
    then -> ObjRelationship -> other ObjEntity -> ObjAttributes

    On 5/19/08, Dirk Lattermann <dlatt@alqualonde.de> wrote:
    > The following may boil down to "How can I get entity/property
    > information on a Fault object?", but I'm not sure. Let me explain:
    >
    > To use Cayenne in a Swing application, I found JBND yesterday after
    > browsing this list. It didn't seem too complicated to implement the
    > needed org.jbnd.DataObject interface for the CayenneDataObjects, so I
    > gave it a naïve try.
    >
    > I used a custom superclass for the objects generated by the Cayenne
    > modeler. Most things were rather straightforward and work to a small
    > amount. Then I stumbled over a problem which seems to be connected to
    > Faults.
    >
    > A JBND DataObject must be able to return a JBND DataType which
    > describes, among others, its properties. To determine the type of a
    > property (attribute, to-one or to-many), I use
    >
    > -----------
    > objEntity = JBNDCayenneObject.this.getObjEntity();
    > if (objEntity.getAttribute(key) != null) return DataType.ATTRIBUTE_KEY;
    > if (objEntity.getRelationship(key) != null)
    > {
    > if (objEntity.getRelationship(key).isToMany()) return
    > DataType.TO_MANY_KEY;
    > else return TO_ONE_KEY;
    > }
    > -----------
    >
    > now, in a to-many-relationship, the JBND framework asks for the type of
    > a property of a descendant object. A
    > System.out.println(JBNDCayenneObject.this)
    > reveals
    > {<no id>; transient; []}
    >
    > This indicates a yet unfetched object (Fault), right?
    > Apparently, even though JBNDCayenneObject.this.getClass() is the
    > correct class of my data object, the getObjEntity() returns null.
    >
    > How can I obtain the property information in this case?
    > Maybe it should be done via the DataMap and object entity name, but how
    > do I find and access the DataMap?
    > Even JBNDCayenneObject.this.getObjectId() returns null!
    >
    > Thank you!
    >
    > Dirk
    >
    >



    This archive was generated by hypermail 2.0.0 : Mon May 19 2008 - 17:09:56 EDT