package org.apache.kyuubi.engine.jdbc.session;
import org.apache.commons.dbcp2.DelegatingConnection;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Objects;
/**
* JDBC 包装类
*
*
* Created by zhenqin.
* User: zhenqin
* Date: 2026/2/11
* Time: 10:18
* Vendor: yiidata.com
*
*
*
* @author zhenqin
*/
public class JdbcConnectionWrapper extends DelegatingConnection implements JdbcConnection {
/**
* MySQL 等数据库支持的 connection Id
*/
private String connectionId;
/**
* 强制关闭,并且废弃的连接
*/
private boolean validFlag = true;
/**
* 直接的连接
*/
final Connection realConnection;
/**
* 代理的连接和直接的连接
* @param connection
* @param realConnection
*/
public JdbcConnectionWrapper(Connection connection, Connection realConnection) {
super(connection);
this.realConnection = realConnection;
}
public String getConnectionId() {
return connectionId;
}
public void setConnectionId(String connectionId) {
this.connectionId = connectionId;
}
public boolean isValidFlag() {
return validFlag;
}
public void setValidFlag(boolean validFlag) {
this.validFlag = validFlag;
}
@Override
public void directClose() {
try {
realConnection.close();
} catch (Exception ignore) {}
}
@Override
public void close() throws SQLException {
directClose();
super.close();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
JdbcConnectionWrapper that = (JdbcConnectionWrapper) o;
return Objects.equals(getDelegate(), that.getDelegate());
}
@Override
public int hashCode() {
return Objects.hash(getDelegate());
}
}