< prev index next >
src/jdk.jfr/share/classes/jdk/jfr/internal/settings/PeriodSetting.java
Print this page
*** 56,69 ****
this.eventType = Objects.requireNonNull(eventType);
}
@Override
public String combine(Set<String> values) {
! long min = Long.MAX_VALUE;
boolean beginChunk = false;
boolean endChunk = false;
! String text = EVERY_CHUNK;
for (String value : values) {
switch (value) {
case EVERY_CHUNK:
beginChunk = true;
endChunk = true;
--- 56,70 ----
this.eventType = Objects.requireNonNull(eventType);
}
@Override
public String combine(Set<String> values) {
!
boolean beginChunk = false;
boolean endChunk = false;
! Long min = null;
! String text = null;
for (String value : values) {
switch (value) {
case EVERY_CHUNK:
beginChunk = true;
endChunk = true;
*** 73,99 ****
break;
case END_CHUNK:
endChunk = true;
break;
default:
! long l = Utils.parseTimespan(value);
if (l < min) {
text = value;
min = l;
}
}
}
! if (min != Long.MAX_VALUE) {
return text;
}
if (beginChunk && !endChunk) {
return BEGIN_CHUNK;
}
if (!beginChunk && endChunk) {
return END_CHUNK;
}
! return text;
}
@Override
public void setValue(String value) {
switch (value) {
--- 74,107 ----
break;
case END_CHUNK:
endChunk = true;
break;
default:
! long l = Utils.parseTimespanWithInfinity(value);
! // Always accept first specified value
! if (min == null) {
! text = value;
! min = l;
! } else {
if (l < min) {
text = value;
min = l;
}
}
}
! }
! // A specified interval trumps *_CHUNK
! if (min != null) {
return text;
}
if (beginChunk && !endChunk) {
return BEGIN_CHUNK;
}
if (!beginChunk && endChunk) {
return END_CHUNK;
}
! return EVERY_CHUNK; // also default
}
@Override
public void setValue(String value) {
switch (value) {
*** 105,115 ****
break;
case END_CHUNK:
eventType.setPeriod(0, false, true);
break;
default:
! eventType.setPeriod(Utils.parseTimespan(value) / 1_000_000, false, false);
}
this.value = value;
}
@Override
--- 113,128 ----
break;
case END_CHUNK:
eventType.setPeriod(0, false, true);
break;
default:
! long nanos = Utils.parseTimespanWithInfinity(value);
! if (nanos != Long.MAX_VALUE) {
! eventType.setPeriod(nanos / 1_000_000, false, false);
! } else {
! eventType.setPeriod(Long.MAX_VALUE, false, false);
! }
}
this.value = value;
}
@Override
< prev index next >