This is experimental functionality, and as such subject to change. Use at your own risk!
This documentation is for the unreleased development version of jOOQ. Click on the above version links to get this documentation for a supported version of jOOQ.
Listening Replacer
Applies to ❌ Open Source Edition ✅ Express Edition ✅ Professional Edition ✅ Enterprise Edition
This replacer doesn't replace anything on its own, but helps debug things from other replacers. For example, a Replacer that removes redundant NOT(NOT(x))
expressions:
// The input condition Condition c = ctx.parser().parseCondition("not not not book.id != 1"); // The replacer doing the replacement Replacer r = Replacer.of(q -> { if (q instanceof QOM.Not n1 && n1.$arg1() instanceof QOM.Not n2) return n2.$arg1(); else if (q instanceof QOM.Not n1 && n1.$arg1() instanceof QOM.Ne<?> n2) return n2.$arg1().eq((Field) n2.$arg2()); else return q; }); // A proxy to the above replacer, doing some logging r = Replacers.listening(r, (p1, p2) -> System.out.println("Replacing: " + p1 + " => " + p2)); // The application of the replacement QueryPart result = c.$replace(r); System.out.println("Result: " + result);
The above now prints each replacement that the depth first replacement algorithm applies to your expression tree, bottom-up:
Replacing: not (book.id <> 1) => book.id = 1 Replacing: not (not (book.id = 1)) => book.id = 1 Result: book.id = 1
Feedback
Do you have any feedback about this page? We'd love to hear it!