Hi Wesley, I agree with getting rid of FromEndOfWindow and just having AfterWatermark. I have wanted to do this for a while, so if someone else does it that would be great.
This comes from the separation of OnceTrigger (triggers that fire just once) and Trigger (triggers that may fire multiple times). But this separation is not that important and a little fake - if you use FromEndOfWindow and nonzero allowed lateness you can get multiple panes due to final panes. The more important distinction is actually between triggers that finish and triggers that don't finish... Anyhow, even if we care about once vs not-once, we can just do analysis on the constructed trigger instead of making the types and classes complex. Kenn On Thu, Apr 20, 2017 at 12:59 AM, Wesley Tanaka <wtan...@yahoo.com.invalid> wrote: > AfterWatermarkEarlyAndLate has: > public AfterWatermarkEarlyAndLate withEarlyFirings(OnceTrigger > earlyTrigger) > public AfterWatermarkEarlyAndLate withLateFirings(OnceTrigger > lateTrigger) > FromEndOfWindow has: > public AfterWatermarkEarlyAndLate withEarlyFirings(OnceTrigger > earlyFirings) public AfterWatermarkEarlyAndLate > withLateFirings(OnceTrigger lateFirings) > As a means of trying to understand the trigger API, I am curious if it > might make sense conceptually to: > 1. rename AfterWatermarkEarlyAndLate => EarlyAndLate since it is already > an inner class of AfterWatermark2. get rid of FromEndOfWindow by having > AfterWatermark.pastEndOfWindow() return a new > AfterWatermarkEarlyAndLate(Never.ever(), > null); > Or is there a value to having FromEndOfWindow be separate that I am not > understanding? > > --- > Wesley Tanaka > https://wtanaka.com/