}
public int doStartTag() throws JspException
{
if (pageContext.getAttribute("caucho.jstl.sql.conn") != null)
throw new JspTagException(L.l("nexted sql:transaction are forbidden"));
ELContext env = pageContext.getELContext();
try {
DataSource ds;
if (_dataSource != null)
ds = SqlQueryTag.getDataSource(pageContext, _dataSource.evalObject(env));
else
ds = SqlQueryTag.getDataSource(pageContext, null);
int isolationCode = -1;
if (_isolation != null) {
String isolation = _isolation.evalString(env);
if (isolation.equals("read_committed"))
isolationCode = Connection.TRANSACTION_READ_COMMITTED;
else if (isolation.equals("read_uncommitted"))
isolationCode = Connection.TRANSACTION_READ_UNCOMMITTED;
else if (isolation.equals("repeatable_read"))
isolationCode = Connection.TRANSACTION_REPEATABLE_READ;
else if (isolation.equals("serializable"))
isolationCode = Connection.TRANSACTION_SERIALIZABLE;
else
throw new JspTagException(L.l("unknown sql:transaction isolation ~{0}'", isolation));
}
_conn = ds.getConnection();
_oldIsolation = _conn.getTransactionIsolation();