< prev index next >
application/org.openjdk.jmc.flightrecorder.ext.jfx/src/main/java/org/openjdk/jmc/flightrecorder/ext/jfx/JfxPulseDurationRule.java
Print this page
@@ -50,14 +50,14 @@
import org.openjdk.jmc.common.unit.LinearUnit;
import org.openjdk.jmc.common.unit.UnitLookup;
import org.openjdk.jmc.common.util.IPreferenceValueProvider;
import org.openjdk.jmc.common.util.TypedPreference;
import org.openjdk.jmc.flightrecorder.JfrAttributes;
+import org.openjdk.jmc.flightrecorder.ext.jfx.JfxVersionUtil.JavaFxEventAvailability;
import org.openjdk.jmc.flightrecorder.rules.IRule;
import org.openjdk.jmc.flightrecorder.rules.Result;
import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit;
-import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit.EventAvailability;
public class JfxPulseDurationRule implements IRule {
private static final String RESULT_ID = "pulseDuration"; //$NON-NLS-1$
/*
@@ -74,22 +74,27 @@
private static final List<TypedPreference<?>> CONFIG_ATTRIBUTES = Arrays
.<TypedPreference<?>> asList(CONFIG_TARGET_FRAME_RATE);
private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
- EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items, JfxConstants.JFX_PULSE_ID);
- if (eventAvailability == EventAvailability.DISABLED || eventAvailability == EventAvailability.UNKNOWN
- || eventAvailability == EventAvailability.NONE) {
- return RulesToolkit.getEventAvailabilityResult(this, items, eventAvailability, JfxConstants.JFX_PULSE_ID);
+ JavaFxEventAvailability availability = JfxVersionUtil.getAvailability(items);
+ if (availability == JavaFxEventAvailability.None) {
+ // Could possibly check the JVM version for better suggestions here, but not very important
+ return RulesToolkit.getEventAvailabilityResult(this, items,
+ RulesToolkit.getEventAvailability(items, JfxConstants.TYPE_ID_PULSE_PHASE_12),
+ JfxConstants.TYPE_ID_PULSE_PHASE_12);
}
+
IQuantity targetFramerate = valueProvider.getPreferenceValue(CONFIG_TARGET_FRAME_RATE);
ITypedQuantity<LinearUnit> targetPhaseTime = UnitLookup.MILLISECOND
.quantity(1000.0 / targetFramerate.longValue());
IItemFilter longDurationFilter = ItemFilters.more(JfrAttributes.DURATION, targetPhaseTime);
- IItemFilter longPhasesFilter = ItemFilters.and(longDurationFilter, ItemFilters.type(JfxConstants.JFX_PULSE_ID));
+ IItemFilter longPhasesFilter = ItemFilters.and(longDurationFilter,
+ ItemFilters.type(JfxVersionUtil.getPulseTypeId(availability)));
IQuantity longPhases = items.getAggregate(Aggregators.count(longPhasesFilter));
- IQuantity allPhases = items.getAggregate(Aggregators.count(ItemFilters.type(JfxConstants.JFX_PULSE_ID)));
+ IQuantity allPhases = items
+ .getAggregate(Aggregators.count(ItemFilters.type(JfxVersionUtil.getPulseTypeId(availability))));
if (longPhases != null && longPhases.doubleValue() > 0) {
double ratioOfLongPhases = longPhases.ratioTo(allPhases);
double mappedScore = RulesToolkit.mapExp100(ratioOfLongPhases, 0.05, 0.5);
mappedScore = mappedScore < 1 ? 1 : mappedScore;
return new Result(this, mappedScore,
< prev index next >