mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-03 12:05:59 +01:00
53 lines
1.5 KiB
Java
53 lines
1.5 KiB
Java
package org.postgresql;
|
|
|
|
import java.lang.reflect.InvocationHandler;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Proxy;
|
|
import java.sql.Connection;
|
|
import java.sql.SQLException;
|
|
import java.util.Properties;
|
|
|
|
/**
|
|
* Wraps the PostgreSQL JDBC driver to convert the returning column names to lower case.
|
|
*/
|
|
public class Driver2 extends Driver {
|
|
|
|
@Override
|
|
public java.sql.Connection connect(String url, Properties info) throws SQLException {
|
|
Connection conn = super.connect(url, info);
|
|
|
|
Object proxy = Proxy.newProxyInstance(
|
|
conn.getClass().getClassLoader(),
|
|
new Class[]{ Connection.class },
|
|
new ConnectionProxyHandler(conn)
|
|
);
|
|
|
|
return Connection.class.cast(proxy);
|
|
}
|
|
|
|
|
|
private static class ConnectionProxyHandler implements InvocationHandler {
|
|
|
|
private Connection conn;
|
|
|
|
public ConnectionProxyHandler(Connection conn){
|
|
this.conn = conn;
|
|
}
|
|
|
|
@Override
|
|
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
|
if(method.getName().equals("prepareStatement")){
|
|
if(args != null && args.length == 2 && args[1].getClass().isArray()){
|
|
String[] keys = (String[]) args[1];
|
|
for(int i = 0; i < keys.length; i++){
|
|
keys[i] = keys[i].toLowerCase();
|
|
}
|
|
}
|
|
}
|
|
return method.invoke(conn, args);
|
|
}
|
|
}
|
|
|
|
}
|
|
|