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();
|
}
|
}
|
}
|