001
014
015 package com.liferay.portal.kernel.util;
016
017 import java.util.HashSet;
018 import java.util.Set;
019
020
023 public class ThreadLocalRegistry {
024
025 public static ThreadLocal<?>[] captureSnapshot() {
026 Set<ThreadLocal<?>> threadLocalSet = _threadLocalSet.get();
027
028 return threadLocalSet.toArray(
029 new ThreadLocal<?>[threadLocalSet.size()]);
030 }
031
032 public static void registerThreadLocal(ThreadLocal<?> threadLocal) {
033 Set<ThreadLocal<?>> threadLocalSet = _threadLocalSet.get();
034
035 threadLocalSet.add(threadLocal);
036 }
037
038 public static void resetThreadLocals() {
039 Set<ThreadLocal<?>> threadLocalSet = _threadLocalSet.get();
040
041 if (threadLocalSet == null) {
042 return;
043 }
044
045 for (ThreadLocal<?> threadLocal : threadLocalSet) {
046 threadLocal.remove();
047 }
048 }
049
050 private static ThreadLocal<Set<ThreadLocal<?>>> _threadLocalSet =
051 new InitialThreadLocal<Set<ThreadLocal<?>>>(
052 ThreadLocalRegistry.class + "._threadLocalSet",
053 new HashSet<ThreadLocal<?>>());
054
055 }