1
22
23 package com.liferay.portal.monitoring.statistics;
24
25 import com.liferay.portal.kernel.util.InitialThreadLocal;
26 import com.liferay.portal.util.PropsValues;
27
28 import java.util.ArrayList;
29 import java.util.Collections;
30 import java.util.List;
31
32
38 public class DataSampleThreadLocal implements Cloneable {
39
40 public static void addDataSample(DataSample dataSample) {
41 if (!_monitoringDataSampleThreadLocal) {
42 return;
43 }
44
45 _dataSampleThreadLocal.get()._addDataSample(dataSample);
46 }
47
48 public static void clearDataSamples() {
49 _dataSampleThreadLocal.remove();
50 }
51
52 public static List<DataSample> getDataSamples() {
53 if (!_monitoringDataSampleThreadLocal) {
54 return Collections.EMPTY_LIST;
55 }
56
57 return _dataSampleThreadLocal.get()._getDataSamples();
58 }
59
60 public static boolean isMonitoringDataSampleThreadLocal() {
61 return _monitoringDataSampleThreadLocal;
62 }
63
64 public static void setMonitoringDataSampleThreadLocal(
65 boolean monitoringDataSampleThreadLocal) {
66
67 _monitoringDataSampleThreadLocal = monitoringDataSampleThreadLocal;
68 }
69
70 public Object clone() {
71 return new DataSampleThreadLocal();
72 }
73
74 public long getMonitorTime() {
75 return _monitorTime;
76 }
77
78 private DataSampleThreadLocal() {
79 _monitorTime = System.currentTimeMillis();
80 }
81
82 private void _addDataSample(DataSample dataSample) {
83 _dataSamples.add(dataSample);
84 }
85
86 private List<DataSample> _getDataSamples() {
87 return _dataSamples;
88 }
89
90 private static ThreadLocal<DataSampleThreadLocal> _dataSampleThreadLocal =
91 new InitialThreadLocal<DataSampleThreadLocal>(
92 new DataSampleThreadLocal());
93 private static boolean _monitoringDataSampleThreadLocal =
94 PropsValues.MONITORING_DATA_SAMPLE_THREAD_LOCAL;
95
96 private List<DataSample> _dataSamples = new ArrayList<DataSample>();
97 private long _monitorTime;
98
99 }