001package org.kuali.common.util.wait; 002 003import org.kuali.common.util.Assert; 004import org.kuali.common.util.FormatUtils; 005 006public final class WaitContext { 007 008 private final long timeoutMillis; 009 private final long sleepMillis; 010 private final long initialPauseMillis; 011 012 public static class Builder { 013 014 // Required 015 private final long timeoutMillis; 016 017 // Optional 018 private long sleepMillis = FormatUtils.getMillis("1s"); // 1 second 019 private long initialPauseMillis = 0; 020 021 public Builder(long timeoutMillis) { 022 this.timeoutMillis = timeoutMillis; 023 } 024 025 public Builder initialPauseMillis(long initialPauseMillis) { 026 this.initialPauseMillis = initialPauseMillis; 027 return this; 028 } 029 030 public Builder sleepMillis(long sleepMillis) { 031 this.sleepMillis = sleepMillis; 032 return this; 033 } 034 035 public WaitContext build() { 036 Assert.noNegatives(timeoutMillis, sleepMillis, initialPauseMillis); 037 return new WaitContext(this); 038 } 039 040 } 041 042 private WaitContext(Builder builder) { 043 this.timeoutMillis = builder.timeoutMillis; 044 this.sleepMillis = builder.sleepMillis; 045 this.initialPauseMillis = builder.initialPauseMillis; 046 } 047 048 public long getTimeoutMillis() { 049 return timeoutMillis; 050 } 051 052 public long getSleepMillis() { 053 return sleepMillis; 054 } 055 056 public long getInitialPauseMillis() { 057 return initialPauseMillis; 058 } 059 060}