add sql wall support

This commit is contained in:
温少
2012-03-15 21:36:22 +08:00
parent fb5ef78a72
commit 5ddff762bd
4 changed files with 95 additions and 29 deletions
@@ -1,27 +0,0 @@
package com.alibaba.druid.filter.wall;
public class IllegalConditionViolation implements Violation {
private String condition;
public IllegalConditionViolation(){
}
public IllegalConditionViolation(String condition){
this.condition = condition;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public String toString() {
return this.condition;
}
}
@@ -0,0 +1,21 @@
package com.alibaba.druid.filter.wall.spi;
import com.alibaba.druid.filter.wall.WallProvider;
import com.alibaba.druid.filter.wall.WallVisitor;
import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser;
import com.alibaba.druid.sql.parser.SQLStatementParser;
public class OracleWallProvider extends WallProvider {
@Override
public SQLStatementParser createParser(String sql) {
return new OracleStatementParser(sql);
}
@Override
public WallVisitor createWallVisitor() {
return new OracleWallVisitor();
}
}
@@ -1,6 +1,6 @@
package com.alibaba.druid.filter.wall.spi;
import com.alibaba.druid.filter.wall.IllegalConditionViolation;
import com.alibaba.druid.filter.wall.IllegalSQLObjectViolation;
import com.alibaba.druid.filter.wall.WallVisitor;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLExpr;
@@ -25,7 +25,7 @@ public class WallVisitorUtils {
public static void check(WallVisitor visitor, SQLBinaryOpExpr x) {
if (Boolean.TRUE == getValue(x)) {
visitor.getViolations().add(new IllegalConditionViolation(SQLUtils.toSQLString(x)));
visitor.getViolations().add(new IllegalSQLObjectViolation(SQLUtils.toSQLString(x)));
}
}
@@ -0,0 +1,72 @@
package com.alibaba.druid.sql;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import junit.framework.TestCase;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.util.JdbcUtils;
public class OnlineOracleTest3 extends TestCase {
private String jdbcUrl;
private String user;
private String password;
private DruidDataSource dataSource;
public void setUp() throws Exception {
jdbcUrl = "jdbc:oracle:thin:@10.20.149.18:1521:emdb";
user = "wardon";
password = "wardon";
dataSource = new DruidDataSource();
dataSource.setInitialSize(1);
dataSource.setUrl(jdbcUrl);
dataSource.setUsername(user);
dataSource.setPassword(password);
dataSource.setMaxActive(50);
dataSource.setPoolPreparedStatements(true);
dataSource.setMaxOpenPreparedStatements(100);
}
public void test_connect() throws Exception {
execute("select * from session_roles");
}
public void executeQuery(String sql) throws SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = dataSource.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
JdbcUtils.printResultSet(rs);
} finally {
JdbcUtils.close(rs);
JdbcUtils.close(stmt);
JdbcUtils.close(conn);
}
}
public void execute(String sql) throws SQLException {
Connection conn = null;
Statement stmt = null;
try {
conn = dataSource.getConnection();
stmt = conn.createStatement();
stmt.execute(sql);
} finally {
JdbcUtils.close(stmt);
JdbcUtils.close(conn);
}
}
}