Re: Path Expression => Attribute

From: Tobias SCHOESSLER (Tobias.Schoessle..nvienna.org)
Date: Fri Apr 07 2006 - 08:40:32 EDT

  • Next message: Andrus Adamchik: "Re: Path Expression => Attribute"

    Andrus, this worked fine, thank you. I use this method to lookup the
    ObjAttribute for a given path now.

          public ObjAttribute pathToObjAttribute(Class baseClass, String path)
    {
                ObjEntity rootEntity =
    ctxt.getEntityResolver().lookupObjEntity(baseClass);
                ObjAttribute attribute =
    (ObjAttribute)Expression.fromString(path).evaluate(rootEntity);
                return attribute;
          }

    In the simplest case I feed this the name of an attribute in the baseClass
    and it returns me the ObjAttribute. e.G. 'countryCode'

    However it turned out that I rather need to use Db Paths to also be able to
    specify PK values. I changed the method to

          public DbAttribute pathToDbAttribute(Class baseClass, String path) {
                DbEntity rootEntity =
    ctxt.getEntityResolver().lookupDbEntity(baseClass);
                DbAttribute attribute =
    (DbAttribute)Expression.fromString(path).evaluate(rootEntity);
                return attribute;
          }

    I expect to be able to feed it the corresponding database attribute name
    now e.G. COUNTRY_CODE but this fails with the exception

    Caused by: org.objectstyle.cayenne.exp.ExpressionException: [v.1.1.3
    September 28 2005] Invalid expression type: 'ObjPath', DB_PATH is
    expected.
            at
    org.objectstyle.cayenne.map.DbEntity.resolvePathComponents(DbEntity.java:249)
            at
    org.objectstyle.cayenne.exp.parser.ASTPath.evaluateEntityNode(ASTPath.java:108)
            at
    org.objectstyle.cayenne.exp.parser.ASTObjPath.evaluateNode(ASTObjPath.java:85)
            at
    org.objectstyle.cayenne.exp.parser.SimpleNode.evaluate(SimpleNode.java:243)
            ... 43 more

                                                                               
                 Andrus Adamchik
                 <andru..bjectsty
                 le.org> To
                                           cayenne-use..ncubator.apache.org
                 Monday, 3 April cc
                 2006 16:44
                                                                       Subject
                                           Re: Path Expression => Attribute
                 Please respond to
                 cayenne-use..ncu
                 bator.apache.org
                                                                               
                                                                               
                                                                               

    You can evaluate an expression with root ObjEntity:

    String path = "toArtist.exhibitArray.closingDate";
    ObjEntity rootEntity = context.getEntityResolver().lookupObjEntity
    (Painting.class);
    ObjAttribute attribute = Expression.fromString(path).evaluate
    (rootEntity);

    Andrus

    On Apr 3, 2006, at 6:36 PM, Tobias SCHOESSLER wrote:

    > hi,
    >
    > How do I get from a path expression to the resulting attribute
    > object.
    >
    > E.g. Is there anything that I can use to parse a path like
    >
    > toArtist.exhibitArray.closingDate
    >
    > and get the corresponding ObjAttribute for closingDate.
    >
    > As a precondition i would assume that the path evaluates to an
    > attribute.
    >
    > thanks
    >
    > regards
    >
    > Tobias
    >
    >



    This archive was generated by hypermail 2.0.0 : Fri Apr 07 2006 - 08:41:02 EDT