import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentSkipListSet;
-import javax.annotation.concurrent.ThreadSafe;
/**
- * Registry of {@link CloseTracked} instances.
+ * Registry of {@link CloseTracked} instances. This class is thread-safe.
*
* @author Michael Vorburger.ch
*/
-@ThreadSafe
public class CloseTrackedRegistry<T extends CloseTracked<T>> {
private final Object anchor;
private final String createDescription;
- private final Set<CloseTracked<T>> tracked = new ConcurrentSkipListSet<>(
- (o1, o2) -> Integer.compare(System.identityHashCode(o1), System.identityHashCode(o2)));
+ private final Set<CloseTracked<T>> tracked =
+ new ConcurrentSkipListSet<>(Comparator.comparingInt(System::identityHashCode));
private final boolean isDebugContextEnabled;
}
Set<CloseTrackedRegistryReportEntry<T>> report = new HashSet<>();
- map.forEach((stackTraceElements, number) -> {
- copyOfTracked.stream().filter(closeTracked -> {
- StackTraceElement[] closeTrackedStackTraceArray = closeTracked.getAllocationContextStackTrace();
- List<StackTraceElement> closeTrackedStackTraceElements =
- closeTrackedStackTraceArray != null ? asList(closeTrackedStackTraceArray) : emptyList();
- return closeTrackedStackTraceElements.equals(stackTraceElements);
- }).findAny().ifPresent(exampleCloseTracked -> {
- report.add(new CloseTrackedRegistryReportEntry<>(exampleCloseTracked, number, stackTraceElements));
- });
- });
+ map.forEach((stackTraceElements, number) -> copyOfTracked.stream().filter(closeTracked -> {
+ StackTraceElement[] closeTrackedStackTraceArray = closeTracked.getAllocationContextStackTrace();
+ List<StackTraceElement> closeTrackedStackTraceElements =
+ closeTrackedStackTraceArray != null ? asList(closeTrackedStackTraceArray) : emptyList();
+ return closeTrackedStackTraceElements.equals(stackTraceElements);
+ }).findAny().ifPresent(exampleCloseTracked -> report.add(
+ new CloseTrackedRegistryReportEntry<>(exampleCloseTracked, number, stackTraceElements))));
return report;
}