Hеоптимальность API: мы сначала создавали lookup = FieldsLookup(a, b).add...add, а затем вызывали a.setIn(lookup). Для этого приходилось явно импортировать класс FieldsLookup, конструировать его на базе объекта a, а затем ещё и передавать в параметр метода a -- избыточность.
В старой реализации мы могли навесить InFilter только с использованием одного фильтрующего курсора. На практике этого недостаточно, бывает нужно два и более фильтрующих курсора.
Теперь, в trunk-версии Celesta, обе эти проблемы исправлены.
Обратная совместимость потеряна, код придётся переписать. Учитывая, что функциональность новая и использовалась мало где, мы не думаем, что это приведёт к большим трудностям.
Как изменён API? Теперь для создания in-filter необходимо писать так:
a.setIn(b).add("a1", "b1").add("a2", "b2")
Как видим, необходимость в импортировании лишнего класса отпала.
Если нужно добавить ещё один фильтрующий курсор, нужно воспользоваться методом and и продолжить цепочку:
.and(c).add("a1", "c1")
Полное описание приведено в wiki.
С уважением,
ИП