The other option I've been thinking about is to get limitFetchTime() / 
limitTimeAllowedTo() to return a Future object or some equivalent notion say a 
BooleanHolder. 

BooleanHolder hasPartialResults = query.limitTimeAllowedTo(500, MILLISECONDS, 
hasPartialResults);
query.list();
if ( hasPartialResults.get() ) {
  //do stuffs
}

But:
 - that's a bit weird to get a future in this sync API
 - it breaks the method chaining used in the rest of the API

Another possibility is to optionally let people pass the boolean holder that is 
populated after the call

BooleanHolder hasPartialResults = new BooleanHolder();
List results = query.limitTimeAllowedTo(500, MILLISECONDS, 
hasPartialResults).list();
if ( hasPartialResults.get() ) {
  //do stuffs
}

WDYT?

On 6 nov. 2010, at 15:25, Emmanuel Bernard wrote:

> You'll need to extend:
> - List
> - Iterator
> - ScrollableResults
> 
> Not sure that's a good thing.
> 
> You can reuse the query as long as you check hasPartialResults() before 
> calling list/iterate/scroll query again.
> 
> PS: we should add tests about query reusability, I'm not sure it works as 
> expected today.
> 
> 
> On 6 nov. 2010, at 12:31, Sanne Grinovero wrote:
> 
>> Hello,
>> about naming I have no better ideas:
>> .limitFetchTime() //slightly different, not very happy about it either
>> 
>> about API, does it really make sense to have hasPartialResults() as a
>> method of the Query?
>> It should be a List property I think - I have no strong opinions about
>> this as I don't like having to extend the List implementation.
>> 
>> But really Query is something I might want to reuse - unlikely but I'd
>> expect that to work fine.
>> So what about:
>> 
>> SomeNewList results = query.list(500, TimeUnit.MILLISECONDS)
>> or a batter named method.
>> 
>> So:
>> 
>> if ( results.hasPartialResults() ) {
>>   displayWarningToUser();
>> }
>> 
>> This is one of those cases in which I miss the option of having a
>> couple of values from a function.
>> 
>> Sanne
>> 
>> 2010/11/5 Emmanuel Bernard <emman...@hibernate.org>:
>>> If you can find better name for the API, please advise. I am not happy with 
>>> the current version
>>> 
>>> Query luceneQuery = ...;
>>> FullTextQuery query = fullTextSession.createFullTextQuery(luceneQuery, 
>>> User.class);
>>> 
>>> //define the timeout in seconds
>>> query.limitFetchingTime(500, TimeUnit.MILLISECONDS);
>>> List results = query.list();
>>> 
>>> if ( query.hasPartialResults() ) {
>>>   displayWarningToUser();
>>> }
>>> 
>>> Emmanuel
>>> _______________________________________________
>>> hibernate-dev mailing list
>>> hibernate-dev@lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>> 
> 
> 
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev


_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to