improve WallFilter

This commit is contained in:
wenshao
2012-12-18 17:37:59 +08:00
parent 66c5f57dde
commit bc83a6b79a
2 changed files with 17 additions and 0 deletions
@@ -313,6 +313,10 @@ public class WallFilter extends FilterAdapter implements WallFilterMBean {
@Override
public boolean isWrapperFor(FilterChain chain, Wrapper wrapper, Class<?> iface) throws SQLException {
if (config.isAllowDoPrivileged() && WallProvider.ispPivileged()) {
return chain.isWrapperFor(wrapper, iface);
}
if (!this.provider.getConfig().isWrapAllow()) {
return false;
}
@@ -321,6 +325,10 @@ public class WallFilter extends FilterAdapter implements WallFilterMBean {
@Override
public <T> T unwrap(FilterChain chain, Wrapper wrapper, Class<T> iface) throws SQLException {
if (config.isAllowDoPrivileged() && WallProvider.ispPivileged()) {
return chain.unwrap(wrapper, iface);
}
if (!this.provider.getConfig().isWrapAllow()) {
return null;
}
@@ -176,6 +176,15 @@ public abstract class WallProvider {
result.getViolations().addAll(visitor.getViolations());
return result;
}
public static boolean ispPivileged() {
Boolean value = privileged.get();
if (value == null) {
return false;
}
return value.booleanValue();
}
public static <T> T doPrivileged(PrivilegedAction<T> action) {
privileged.set(Boolean.TRUE);