Hi Nikita

That's an interesting suggestion with the Predicate parameter. I gave it some thought and came up with the following concern.

Consider that ObjectSelect is a builder and that the fluent method invocations can happen in "kind of" any order. So then if they're rearranged it may result in the ObjectSelect being in a different state than intended and the predicate subsequently not evaluating as expected.

I'm inclined to not let the developer sabotage themselves like this, on the other hand maybe there's a use case for it. Did you have a use case in mind ? What do you think about the order influencing the outcome ?

Thanks, regards
Jurgen


On Tue, 09 Jul 2024 10:06:51 +0200, Nikita Timofeev <ntimof...@objectstyle.com> wrote:

Hi all,

I like the functional style of apply(). For me it seems best as it's
flexible and has a small footprint.
And as for the condition part we could just add overloaded version with
Predicate<> argument, like this:

public ObjectSelect<T> apply(Predicate<ObjectSelect<T>> cond,
Consumer<ObjectSelect<T>> op) {
     if(cond.test(this)) {
         op.accept( this );
     }
     return this;
}

John's example could be done like this:

.apply(q -> yearRange != null, q -> q.and(APPOINTMENT_DATE.gt(yearRange)))

Reply via email to