This commit is contained in:
温少
2012-03-16 22:21:18 +08:00
parent 629f14469b
commit b8ffd132df
5 changed files with 22 additions and 13 deletions
@@ -18,7 +18,7 @@ import com.alibaba.druid.util.JdbcUtils;
public class WallFilter extends FilterAdapter {
private boolean inited = false;
private boolean inited = false;
private WallProvider provider;
@@ -26,6 +26,8 @@ public class WallFilter extends FilterAdapter {
private boolean loadExtend;
private boolean checkSelectAlwayTrueCondition = true;
@Override
public void init(DataSourceProxy dataSource) {
this.dataSource = dataSource;
@@ -35,10 +37,14 @@ public class WallFilter extends FilterAdapter {
this.inited = true;
}
public WallProvider getProvider() {
return provider;
}
public boolean isLoadDefault() {
return loadDefault;
}
public void checkInit() {
if (inited) {
throw new DruidRuntimeException("wall filter is inited");
@@ -200,15 +206,18 @@ public class WallFilter extends FilterAdapter {
}
public WallProvider createWallProvider(String dbType) {
WallProvider provider;
if (JdbcUtils.MYSQL.equals(dbType)) {
return new MySqlWallProvider(this.loadDefault, this.loadExtend);
provider = new MySqlWallProvider(this.loadDefault, this.loadExtend);
} else if (JdbcUtils.ORACLE.equals(dbType)) {
provider = new OracleWallProvider(this.loadDefault, this.loadExtend);
} else {
throw new IllegalStateException("dbType not support : " + dbType);
}
if (JdbcUtils.ORACLE.equals(dbType)) {
return new OracleWallProvider(this.loadDefault, this.loadExtend);
}
provider.setCheckSelectAlwayTrueCondition(this.checkSelectAlwayTrueCondition);
throw new IllegalStateException("dbType not support : " + dbType);
return provider;
}
}
@@ -7,7 +7,7 @@ import com.alibaba.druid.sql.visitor.SQLASTVisitor;
public interface WallVisitor extends SQLASTVisitor {
WallProvider getWallProvider();
WallProvider getProvider();
List<Violation> getViolations();
@@ -41,7 +41,7 @@ public class MySqlWallVisitor extends MySqlASTVisitorAdapter implements WallVisi
this.provider = provider;
}
public WallProvider getWallProvider() {
public WallProvider getProvider() {
return provider;
}
@@ -179,7 +179,7 @@ public class OracleWallVisitor extends OracleASTVIsitorAdapter implements WallVi
}
@Override
public WallProvider getWallProvider() {
public WallProvider getProvider() {
return this.provider;
}
}
@@ -59,7 +59,7 @@ public class WallVisitorUtils {
return;
}
WallProvider provider = visitor.getWallProvider();
WallProvider provider = visitor.getProvider();
if (!provider.isCheckSelectAlwayTrueCondition()) {
return;
}
@@ -366,7 +366,7 @@ public class WallVisitorUtils {
String methodName = x.getMethodName();
if (visitor.getWallProvider().getPermitFunctions().contains(methodName.toLowerCase())) {
if (visitor.getProvider().getPermitFunctions().contains(methodName.toLowerCase())) {
visitor.getViolations().add(new IllegalSQLObjectViolation(visitor.toSQL(x)));
}
@@ -384,7 +384,7 @@ public class WallVisitorUtils {
ownerName = form(ownerName);
if (visitor.getWallProvider().getPermitSchemas().contains(ownerName.toLowerCase())) {
if (visitor.getProvider().getPermitSchemas().contains(ownerName.toLowerCase())) {
visitor.getViolations().add(new IllegalSQLObjectViolation(visitor.toSQL(x)));
}
}