[ 
https://issues.apache.org/jira/browse/JDO-737?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andy Jefferson updated JDO-737:
-------------------------------
    Description: 
Further to JDO-736 it would be nice to redesign the Query class to have the 
setter methods as FLUENT. I see two ways of achieving this

Option1
Query q = 
pm.newQuery(Person.class).filter("firstName.startsWith('F')").orderBy("firstName");

So we add a subset of the setters as methods without "set" so as to align 
further with the typesafe variant in JDO-652. The existing setXXX methods can 
be deprecated.

Option2
Query q = 
pm.newQuery(Person.class).setFilter("firstName.startsWith('F')").setOrdering("firstName");

So we change the return type of (some of) the existing setters. Existing JDO 
code will need to be recompiled due to the return type change.


What is decided here needs to coordinate with JDO-652 so that, for example, if 
JDO-652 comes up with an API like (as currently)

query.filter(cand.value.lt.40).orderBy(cand.name.asc())

then this issue matches the API method names, so using the String-based API for 
the same resultant query the user would do
query.filter("this.value < 40").orderBy("this.name ASC");

  was:
Further to JDO-736 it would be nice to redesign the Query class to have the 
setter methods as FLUENT, so a user could do
Query q = 
pm.newQuery(Person.class).filter("firstName.startsWith('F')").orderBy("firstName");

We could just add a subset of the setters as methods without "set" so as to 
align further with the typesafe variant in JDO-652.


> Change Query API to be "fluent"
> -------------------------------
>
>                 Key: JDO-737
>                 URL: https://issues.apache.org/jira/browse/JDO-737
>             Project: JDO
>          Issue Type: New Feature
>          Components: api, specification, tck
>            Reporter: Andy Jefferson
>             Fix For: JDO 3.2
>
>
> Further to JDO-736 it would be nice to redesign the Query class to have the 
> setter methods as FLUENT. I see two ways of achieving this
> Option1
> Query q = 
> pm.newQuery(Person.class).filter("firstName.startsWith('F')").orderBy("firstName");
> So we add a subset of the setters as methods without "set" so as to align 
> further with the typesafe variant in JDO-652. The existing setXXX methods can 
> be deprecated.
> Option2
> Query q = 
> pm.newQuery(Person.class).setFilter("firstName.startsWith('F')").setOrdering("firstName");
> So we change the return type of (some of) the existing setters. Existing JDO 
> code will need to be recompiled due to the return type change.
> What is decided here needs to coordinate with JDO-652 so that, for example, 
> if JDO-652 comes up with an API like (as currently)
> query.filter(cand.value.lt.40).orderBy(cand.name.asc())
> then this issue matches the API method names, so using the String-based API 
> for the same resultant query the user would do
> query.filter("this.value < 40").orderBy("this.name ASC");



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to