< prev index next >

core/org.openjdk.jmc.flightrecorder.rules.jdk/src/main/java/org/openjdk/jmc/flightrecorder/rules/jdk/general/RecordingSettingsRule.java

Print this page




  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>() {


< prev index next >