+1 On Jul 12, 2012, at 4:59 PM, John Huss wrote:
> Ok, if you approve I'll commit this class and a change to the entity > templates to use it. Then I can do a separate commit to deprecate > reflect.Property and create a subclass of it called PropertyDescriptor and > then replace all the references to reflect.Property to > reflect.PropertyDescriptor. > > On Thu, Jul 12, 2012 at 1:47 AM, Andrus Adamchik > <and...@objectstyle.org>wrote: > >> I'd still go with the Property... If we have to I'd rather rename >> reflect.Property to something else (PropertyDescriptor?), as it is much >> less exposed to the end users, and it would be great to keep simple >> expressive names for the "public" side of the API. >> >> re: package ... org.apache.cayenne.exp looks like a good place for now. >> While we are at the very early stages of 3.2, we'll still have the freedom >> to move it around later if we decide this wasn't the right place. >> >> Andrus >> >> >> On Jul 11, 2012, at 6:08 PM, Robert Zeigler wrote: >>> Yes, it will be confusing. :) >>> >>> Robert >>> >>> On Jul 11, 2012, at 7/119:24 AM , John Huss wrote: >>> >>>> 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 < >> and...@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 >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>> >>> >> >>