cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tobias SCHOESSLER <Tobias.Schoess...@unvienna.org>
Subject Re: Path Expression => Attribute
Date Fri, 07 Apr 2006 12:40:32 GMT
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                                               
             <andrus@objectsty                                             
             le.org>                                                    To 
                                       cayenne-user@incubator.apache.org   
             Monday, 3 April                                            cc 
             2006 16:44                                                    
                                                                   Subject 
                                       Re: Path Expression => Attribute    
             Please respond to                                             
             cayenne-user@incu                                             
             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
>
>




Mime
View raw message