41
42 import org.owasp.encoder.Encode;
43
44 import org.openjdk.jmc.common.item.IItemCollection;
45 import org.openjdk.jmc.common.util.IPreferenceValueProvider;
46 import org.openjdk.jmc.common.util.TypedPreference;
47 import org.openjdk.jmc.flightrecorder.jdk.JdkQueries;
48 import org.openjdk.jmc.flightrecorder.jdk.JdkTypeIDs;
49 import org.openjdk.jmc.flightrecorder.rules.IRule;
50 import org.openjdk.jmc.flightrecorder.rules.Result;
51 import org.openjdk.jmc.flightrecorder.rules.jdk.messages.internal.Messages;
52 import org.openjdk.jmc.flightrecorder.rules.util.JfrRuleTopics;
53 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit;
54 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit.EventAvailability;
55
56 public class RecordingSettingsRule implements IRule {
57 private static final String RECORDING_SETTINGS_RESULT_ID = "OverAggressiveRecordingSetting"; //$NON-NLS-1$
58
59 private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
60 EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items, JdkTypeIDs.SYSTEM_PROPERTIES);
61 if (eventAvailability == EventAvailability.UNAVAILABLE || eventAvailability == EventAvailability.DISABLED) {
62 return RulesToolkit.getEventAvailabilityResult(this, items, eventAvailability,
63 JdkTypeIDs.SYSTEM_PROPERTIES);
64 }
65
66 String names = RulesToolkit.getTypesWithZeroThreshold(items, JdkTypeIDs.THREAD_PARK, JdkTypeIDs.MONITOR_ENTER);
67 if (names != null && names.length() > 0) {
68 String eventsWithoutThreshold = names.trim();
69 return new Result(this, 50,
70 MessageFormat.format(
71 Messages.getString(Messages.OverAggressiveRecordingSettingRuleFactory_TEXT_INFO),
72 Encode.forHtml(eventsWithoutThreshold)),
73 Messages.getString(Messages.OverAggressiveRecordingSettingRuleFactory_TEXT_INFO_LONG),
74 JdkQueries.RECORDING_SETTINGS);
75 }
76 return new Result(this, 0, Messages.getString(Messages.OverAggressiveRecordingSettingRuleFactory_RULE_TEXT_OK));
77 }
78
79 @Override
80 public RunnableFuture<Result> evaluate(final IItemCollection items, final IPreferenceValueProvider valueProvider) {
81 FutureTask<Result> evaluationTask = new FutureTask<>(new Callable<Result>() {
|
41
42 import org.owasp.encoder.Encode;
43
44 import org.openjdk.jmc.common.item.IItemCollection;
45 import org.openjdk.jmc.common.util.IPreferenceValueProvider;
46 import org.openjdk.jmc.common.util.TypedPreference;
47 import org.openjdk.jmc.flightrecorder.jdk.JdkQueries;
48 import org.openjdk.jmc.flightrecorder.jdk.JdkTypeIDs;
49 import org.openjdk.jmc.flightrecorder.rules.IRule;
50 import org.openjdk.jmc.flightrecorder.rules.Result;
51 import org.openjdk.jmc.flightrecorder.rules.jdk.messages.internal.Messages;
52 import org.openjdk.jmc.flightrecorder.rules.util.JfrRuleTopics;
53 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit;
54 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit.EventAvailability;
55
56 public class RecordingSettingsRule implements IRule {
57 private static final String RECORDING_SETTINGS_RESULT_ID = "OverAggressiveRecordingSetting"; //$NON-NLS-1$
58
59 private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
60 EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items, JdkTypeIDs.SYSTEM_PROPERTIES);
61 if (eventAvailability == EventAvailability.UNKNOWN || eventAvailability == EventAvailability.DISABLED) {
62 return RulesToolkit.getEventAvailabilityResult(this, items, eventAvailability,
63 JdkTypeIDs.SYSTEM_PROPERTIES);
64 }
65
66 String names = RulesToolkit.getTypesWithZeroThreshold(items, JdkTypeIDs.THREAD_PARK, JdkTypeIDs.MONITOR_ENTER);
67 if (names != null && names.length() > 0) {
68 String eventsWithoutThreshold = names.trim();
69 return new Result(this, 50,
70 MessageFormat.format(
71 Messages.getString(Messages.OverAggressiveRecordingSettingRuleFactory_TEXT_INFO),
72 Encode.forHtml(eventsWithoutThreshold)),
73 Messages.getString(Messages.OverAggressiveRecordingSettingRuleFactory_TEXT_INFO_LONG),
74 JdkQueries.RECORDING_SETTINGS);
75 }
76 return new Result(this, 0, Messages.getString(Messages.OverAggressiveRecordingSettingRuleFactory_RULE_TEXT_OK));
77 }
78
79 @Override
80 public RunnableFuture<Result> evaluate(final IItemCollection items, final IPreferenceValueProvider valueProvider) {
81 FutureTask<Result> evaluationTask = new FutureTask<>(new Callable<Result>() {
|