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
39 public class DataSampleThreadLocal implements Cloneable {
40
41 public static void addDataSample(DataSample dataSample) {
42 if (!_monitoringDataSampleThreadLocal) {
43 return;
44 }
45
46 _dataSampleThreadLocal.get()._addDataSample(dataSample);
47 }
48
49 public static void clearDataSamples() {
50 _dataSampleThreadLocal.remove();
51 }
52
53 public static List<DataSample> getDataSamples() {
54 if (!_monitoringDataSampleThreadLocal) {
55 return Collections.EMPTY_LIST;
56 }
57
58 return _dataSampleThreadLocal.get()._getDataSamples();
59 }
60
61 public static boolean isMonitoringDataSampleThreadLocal() {
62 return _monitoringDataSampleThreadLocal;
63 }
64
65 public static void setMonitoringDataSampleThreadLocal(
66 boolean monitoringDataSampleThreadLocal) {
67
68 _monitoringDataSampleThreadLocal = monitoringDataSampleThreadLocal;
69 }
70
71 public Object clone() {
72 return new DataSampleThreadLocal();
73 }
74
75 public long getMonitorTime() {
76 return _monitorTime;
77 }
78
79 private DataSampleThreadLocal() {
80 _monitorTime = System.currentTimeMillis();
81 }
82
83 private void _addDataSample(DataSample dataSample) {
84 _dataSamples.add(dataSample);
85 }
86
87 private List<DataSample> _getDataSamples() {
88 return _dataSamples;
89 }
90
91 private static ThreadLocal<DataSampleThreadLocal> _dataSampleThreadLocal =
92 new InitialThreadLocal<DataSampleThreadLocal>(
93 new DataSampleThreadLocal());
94 private static boolean _monitoringDataSampleThreadLocal =
95 PropsValues.MONITORING_DATA_SAMPLE_THREAD_LOCAL;
96
97 private List<DataSample> _dataSamples = new ArrayList<DataSample>();
98 private long _monitorTime;
99
100 }