ROPWSDL

From: Michael Victorov (m_victoro..ail.ru)
Date: Mon Aug 28 2006 - 07:31:32 EDT

  • Next message: Watkins, Garry: "Re: Cocoa Cayenne status"

    Hello Andrus, Kevin, All.

    In the last post we had discussed entity resolving in my project.
    -----------------------------------------------------------------------
    >> 4. It would be better to remove .driver.xml file (with db info) from
    >> client side. But I need working local configuration on client side to
    >> map entities to classes and do validateForSave() (etc...). Is there
    >> some crorrect way to make configuration work (maybe partly) without
    >> .driver.xml class?
    >
    > Per my comment on #2, I hope we can still get the mapping from the
    > server and avoid this proble all together. Then on the client you can
    > create a mapping of abstract entity name (e.g. "Artist") to a client
    > class name (e.g. "my.special.Artist") - this can be a hashmap loaded
    > from properties or something. Then you can merge it with the
    > EntityResolver obtained from the server.
    ----------------------------------------------------------------------

    I tried to get as much entity resolving related data from server as
    possible. I decided to keep obj-entity and obj-relationship
    definitions at the client side and all other things are got from
    server (through bootstrap request). These "all other things" are query
    definitions...

    I think the best way is to keep client configuration in slightly
    modified *.map.xml format.

    Bases:
    1. I need to keep entity name to class name mappings on client.
    2. I need to keep obj-entity attribute types on client.
    3. So I also need to keep info about what obj-entity contains
    what attribute.
    4. It seems to be good for Cayenne server to have the definition
    of what it can do and what classes it can process availbale
    fot clients.
    5. If I keep mapping info needed for (1) - (3) in fromat
    like .properties files (etc...) then client will have strange
    configuration files with info which partialy describes server
    structure and which is not enough to understand what exactly
    objects it can work with.

    So I have done following modifications:

     - No "db-entity" elements in *.map.xml files on client side.
     - No "db-relationship" elements.
     - "Obj-entitiy" has no "dbEntityName" attribute.
     - "Obj-relationship" has no "db-relationship-path" attribute.
     - "Obj-relationship" has attribute "toMany". Originally this
       information was in the "db-relationship" declaration.
     - "Obj-relationship" has attribute "reverseRelationshipName"
       which meaning is understood from it's name.
     - "Obj-relationship" has attribute "readOnly".
     - No "query" elements. Query information is loaded directly from
       server.

    We have no platfrom-dependend data in the SOAP interchange and also
    we have no data base info at the client side.
       
    As I understood, all mapping-related Cayenne classes can work normally
    without things which I removed. Except ObjRelationship. You use
    package protected class org.apache.cayenne.map.ClientObjRelationship
    for implementing client entites. I made an analogue.

    I also created ClientMapLoader class which can load client-side
    mapping info from this file format. It is the same as your original
    MapLoader with few changes.

    Loaded client data is merged with info provided from server at the
    bootstrap stage.

    I created an Ant task for generating client configuration files from
    server-side (normal) configuration and a task for generating
    client-sied classes from such client configuration.

    I think it would be nice to have jar file with client config and
    classes available for downloading from web app.

    What do you think about it?

      

    -- 
    Best regards,
     Michael                          mailto:m_victoro..ail.ru
    



    This archive was generated by hypermail 2.0.0 : Mon Aug 28 2006 - 07:31:59 EDT