91 Messages.getString(Messages.BiasedLockingRevocationRule_CONFIG_WARNING_LIMIT_LONG), NUMBER,
92 NUMBER_UNITY.quantity(15));
93
94 public static final TypedPreference<IQuantity> MAX_NUMBER_OF_CLASSES_TO_REPORT = new TypedPreference<>(
95 "biasedRevocation.classesToReport.limit", //$NON-NLS-1$
96 Messages.getString(Messages.General_CONFIG_CLASS_LIMIT),
97 Messages.getString(Messages.General_CONFIG_CLASS_LIMIT_LONG), NUMBER, NUMBER_UNITY.quantity(5));
98
99 private static final TypedPreference<String> FILTERED_CLASSES = new TypedPreference<>(
100 "biasedRevocation.filtered.classes", //$NON-NLS-1$
101 Messages.getString(Messages.BiasedLockingRevocationRule_CONFIG_FILTERED_CLASSES),
102 Messages.getString(Messages.BiasedLockingRevocationRule_CONFIG_FILTERED_CLASSES_LONG),
103 UnitLookup.PLAIN_TEXT.getPersister(), "java.lang.ref.ReferenceQueue$Lock"); //$NON-NLS-1$
104
105 private static final List<TypedPreference<?>> CONFIG_ATTRIBUTES = Arrays.<TypedPreference<?>> asList(WARNING_LIMIT,
106 MAX_NUMBER_OF_CLASSES_TO_REPORT, FILTERED_CLASSES);
107
108 private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
109 EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items,
110 JdkTypeIDs.BIASED_LOCK_CLASS_REVOCATION);
111 if (eventAvailability == EventAvailability.UNAVAILABLE || eventAvailability == EventAvailability.DISABLED) {
112 return RulesToolkit.getEventAvailabilityResult(this, items, eventAvailability,
113 JdkTypeIDs.BIASED_LOCK_CLASS_REVOCATION);
114 }
115
116 IItemCollection revokationEvents = items.apply(JdkFilters.BIASED_LOCKING_REVOCATIONS); // $NON-NLS-1$
117 if (!revokationEvents.hasItems()) {
118 return new Result(this, 0, Messages.getString(Messages.BiasedLockingRevocationPauseRule_TEXT_OK));
119 }
120
121 Set<String> filteredTypes = getFilteredTypes(valueProvider.getPreferenceValue(FILTERED_CLASSES));
122
123 IItemCollection revokedClassesEvents = revokationEvents
124 .apply(ItemFilters.and(ItemFilters.hasAttribute(JdkAttributes.BIASED_REVOCATION_CLASS),
125 ItemFilters.equals(JdkAttributes.BIASED_REVOCATION_DISABLE_BIASING, Boolean.TRUE)));
126 Set<IMCType> revokedTypes = filter(filteredTypes,
127 revokedClassesEvents.getAggregate(Aggregators.distinct(JdkAttributes.BIASED_REVOCATION_CLASS)));
128
129 StringBuilder shortMessage = new StringBuilder();
130 StringBuilder longMessage = new StringBuilder();
131
|
91 Messages.getString(Messages.BiasedLockingRevocationRule_CONFIG_WARNING_LIMIT_LONG), NUMBER,
92 NUMBER_UNITY.quantity(15));
93
94 public static final TypedPreference<IQuantity> MAX_NUMBER_OF_CLASSES_TO_REPORT = new TypedPreference<>(
95 "biasedRevocation.classesToReport.limit", //$NON-NLS-1$
96 Messages.getString(Messages.General_CONFIG_CLASS_LIMIT),
97 Messages.getString(Messages.General_CONFIG_CLASS_LIMIT_LONG), NUMBER, NUMBER_UNITY.quantity(5));
98
99 private static final TypedPreference<String> FILTERED_CLASSES = new TypedPreference<>(
100 "biasedRevocation.filtered.classes", //$NON-NLS-1$
101 Messages.getString(Messages.BiasedLockingRevocationRule_CONFIG_FILTERED_CLASSES),
102 Messages.getString(Messages.BiasedLockingRevocationRule_CONFIG_FILTERED_CLASSES_LONG),
103 UnitLookup.PLAIN_TEXT.getPersister(), "java.lang.ref.ReferenceQueue$Lock"); //$NON-NLS-1$
104
105 private static final List<TypedPreference<?>> CONFIG_ATTRIBUTES = Arrays.<TypedPreference<?>> asList(WARNING_LIMIT,
106 MAX_NUMBER_OF_CLASSES_TO_REPORT, FILTERED_CLASSES);
107
108 private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
109 EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items,
110 JdkTypeIDs.BIASED_LOCK_CLASS_REVOCATION);
111 if (eventAvailability == EventAvailability.UNKNOWN || eventAvailability == EventAvailability.DISABLED) {
112 return RulesToolkit.getEventAvailabilityResult(this, items, eventAvailability,
113 JdkTypeIDs.BIASED_LOCK_CLASS_REVOCATION);
114 }
115
116 IItemCollection revokationEvents = items.apply(JdkFilters.BIASED_LOCKING_REVOCATIONS); // $NON-NLS-1$
117 if (!revokationEvents.hasItems()) {
118 return new Result(this, 0, Messages.getString(Messages.BiasedLockingRevocationPauseRule_TEXT_OK));
119 }
120
121 Set<String> filteredTypes = getFilteredTypes(valueProvider.getPreferenceValue(FILTERED_CLASSES));
122
123 IItemCollection revokedClassesEvents = revokationEvents
124 .apply(ItemFilters.and(ItemFilters.hasAttribute(JdkAttributes.BIASED_REVOCATION_CLASS),
125 ItemFilters.equals(JdkAttributes.BIASED_REVOCATION_DISABLE_BIASING, Boolean.TRUE)));
126 Set<IMCType> revokedTypes = filter(filteredTypes,
127 revokedClassesEvents.getAggregate(Aggregators.distinct(JdkAttributes.BIASED_REVOCATION_CLASS)));
128
129 StringBuilder shortMessage = new StringBuilder();
130 StringBuilder longMessage = new StringBuilder();
131
|