cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Huss <johnth...@gmail.com>
Subject Re: [jira] [Created] (CAY-1724) Add 'Property' class for easier and better Expression creation
Date Wed, 11 Jul 2012 14:24:17 GMT
Hmm, there is already a Property class in org.apache.cayenne.reflect.
 Where would this go?  Perhaps org.apache.cayenne.exp
or org.apache.cayenne.util?  Will it be confusing to have two classes with
the same name?

John

On Wed, Jul 11, 2012 at 2:04 AM, Andrus Adamchik <andrus@objectstyle.org>wrote:

> +1. I saw it used on one project and it was a nice concept.
>
> Andrus
>
> On Jul 11, 2012, at 7:30 AM, John Huss (JIRA) wrote:
>
> > John Huss created CAY-1724:
> > ------------------------------
> >
> >             Summary: Add 'Property' class for easier and better
> Expression creation
> >                 Key: CAY-1724
> >                 URL: https://issues.apache.org/jira/browse/CAY-1724
> >             Project: Cayenne
> >          Issue Type: Improvement
> >          Components: Core Library
> >    Affects Versions: 3.2M1
> >            Reporter: John Huss
> >            Priority: Minor
> >         Attachments: Property.java
> >
> > Project Wonder (WebObjects) has a class which is basically just a
> wrapper around an attribute or relationship name that gives you a way to
> create Expressions in type-safe manner and with minimal effort.  Also sort
> orderings can be easily generated.  In Wonder, these "property" objects are
> part of the entity template so they are generated automatically.
> >
> > So for example:
> >
> > public class _Artist extends CayenneDataObject {
> >    public static final Property<String> NAME = new
> Property<String>(NAME_PROPERTY);
> > ...
> > }
> >
> > Then client code can do things like:
> >
> > new SelectQuery(Artist.class, NAME.eq("Pablo").andExp(AGE.gt(40)),
> AGE.descs());
> >
> > This would select all artists with name equal to Pablo and age greater
> than 40 and order them in descending age order.
> >
> > This concept has been proven to work incredibly well with WebObjects.
>  It's almost as readable as using plain strings but has complete
> compile-time checking for the property name and the type of the objects it
> is compared with.
> >
> > A complete implementation is attached.  It's very simple since
> ExpressionFactory does the work.  If this is accepted, it would make sense
> to modify the built-in entity templates to generate Property constants for
> all of the properties.
> >
> > --
> > This message is automatically generated by JIRA.
> > If you think it was sent incorrectly, please contact your JIRA
> administrators:
> https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
> > For more information on JIRA, see:
> http://www.atlassian.com/software/jira
> >
> >
> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message