cn.hutool.core.lang.caller.SecurityManagerCaller Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hutool-all Show documentation
Show all versions of hutool-all Show documentation
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
package cn.hutool.core.lang.caller;
import java.io.Serializable;
import cn.hutool.core.util.ArrayUtil;
/**
* {@link SecurityManager} 方式获取调用者
*
* @author Looly
*/
public class SecurityManagerCaller extends SecurityManager implements Caller, Serializable {
private static final long serialVersionUID = 1L;
private static final int OFFSET = 1;
@Override
public Class> getCaller() {
final Class>[] context = getClassContext();
if (null != context && (OFFSET + 1) < context.length) {
return context[OFFSET + 1];
}
return null;
}
@Override
public Class> getCallerCaller() {
final Class>[] context = getClassContext();
if (null != context && (OFFSET + 2) < context.length) {
return context[OFFSET + 2];
}
return null;
}
@Override
public Class> getCaller(int depth) {
final Class>[] context = getClassContext();
if (null != context && (OFFSET + depth) < context.length) {
return context[OFFSET + depth];
}
return null;
}
@Override
public boolean isCalledBy(Class> clazz) {
final Class>[] classes = getClassContext();
if(ArrayUtil.isNotEmpty(classes)) {
for (Class> contextClass : classes) {
if (contextClass.equals(clazz)) {
return true;
}
}
}
return false;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy