3
import org.apache.commons.beanutils.Converter;
4
import org.kohsuke.stapler.QueryParameter;
6
import java.util.concurrent.TimeUnit;
9
* Represents a length of something, like "3 seconds"
11
* This supports parameter injection, such as via {@link QueryParameter}.
13
* @author Kohsuke Kawaguchi
16
public class TimeDuration {
17
private final long millis;
19
public TimeDuration(long millis) {
23
public int getTime() {
27
public long getTimeInMillis() {
31
public long as(TimeUnit t) {
32
return t.convert(millis,TimeUnit.MILLISECONDS);
35
public static TimeDuration fromString(String delay) {
40
// TODO: more unit handling
41
if(delay.endsWith("sec")) delay=delay.substring(0,delay.length()-3);
42
if(delay.endsWith("secs")) delay=delay.substring(0,delay.length()-4);
43
return new TimeDuration(Long.parseLong(delay));
44
} catch (NumberFormatException e) {
45
throw new IllegalArgumentException("Invalid time duration value: "+delay);
49
public static class StaplerConverterImpl implements Converter {
50
public Object convert(Class type, Object value) {
53
if (value instanceof String) {
54
return fromString((String) value);
56
throw new UnsupportedOperationException();