cl
1 天以前 f21530d33ca23aeeba2ef073ac6b64422e4e26ca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.vincent.rsf.server.common.datasource;
 
import java.util.ArrayDeque;
import java.util.Deque;
 
/**
 * 数据源上下文
 */
public final class DataSourceContextHolder {
 
    private static final ThreadLocal<Deque<String>> CONTEXT = ThreadLocal.withInitial(ArrayDeque::new);
 
    private DataSourceContextHolder() {
    }
 
    public static void push(String dataSource) {
        CONTEXT.get().push(dataSource);
    }
 
    public static String peek() {
        Deque<String> deque = CONTEXT.get();
        return deque.isEmpty() ? null : deque.peek();
    }
 
    public static void poll() {
        Deque<String> deque = CONTEXT.get();
        if (!deque.isEmpty()) {
            deque.pop();
        }
        if (deque.isEmpty()) {
            CONTEXT.remove();
        }
    }
}