/* * COMSAT * Copyright (c) 2013-2015, Parallel Universe Software Co. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 3.0 * as published by the Free Software Foundation. */ package co.paralleluniverse.fibers.jdbc; import co.paralleluniverse.common.util.CheckedCallable; import co.paralleluniverse.fibers.Suspendable; import java.io.InputStream; import java.io.Reader; import java.math.BigDecimal; import java.net.URL; import java.sql.Array; import java.sql.Blob; import java.sql.CallableStatement; import java.sql.Clob; import java.sql.Date; import java.sql.NClob; import java.sql.Ref; import java.sql.RowId; import java.sql.SQLException; import java.sql.SQLXML; import java.sql.Time; import java.sql.Timestamp; import java.util.Calendar; import java.util.Map; import java.util.concurrent.ExecutorService; /** * @author eitan */ public class FiberCallableStatement extends FiberPreparedStatement implements CallableStatement { public FiberCallableStatement(final CallableStatement cs, final ExecutorService exec) { super(cs, exec); } @Override protected CallableStatement stmt() { return (CallableStatement) super.stmt(); } //Delegations @Override @Suspendable public void registerOutParameter(final int parameterIndex, final int sqlType) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().registerOutParameter(parameterIndex, sqlType); return null; } }); } @Override @Suspendable public void registerOutParameter(final int parameterIndex, final int sqlType, final int scale) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().registerOutParameter(parameterIndex, sqlType, scale); return null; } }); } @Override @Suspendable public boolean wasNull() throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return stmt().wasNull(); } }); } @Override @Suspendable public String getString(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return stmt().getString(parameterIndex); } }); } @Override @Suspendable public boolean getBoolean(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return stmt().getBoolean(parameterIndex); } }); } @Override @Suspendable public byte getByte(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Byte, SQLException>() { @Override public Byte call() throws SQLException { return stmt().getByte(parameterIndex); } }); } @Override @Suspendable public short getShort(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Short, SQLException>() { @Override public Short call() throws SQLException { return stmt().getShort(parameterIndex); } }); } @Override @Suspendable public int getInt(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return stmt().getInt(parameterIndex); } }); } @Override @Suspendable public long getLong(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Long, SQLException>() { @Override public Long call() throws SQLException { return stmt().getLong(parameterIndex); } }); } @Override @Suspendable public float getFloat(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Float, SQLException>() { @Override public Float call() throws SQLException { return stmt().getFloat(parameterIndex); } }); } @Override @Suspendable public double getDouble(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Double, SQLException>() { @Override public Double call() throws SQLException { return stmt().getDouble(parameterIndex); } }); } @Override @Suspendable public BigDecimal getBigDecimal(final int parameterIndex, final int scale) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<BigDecimal, SQLException>() { @Override public BigDecimal call() throws SQLException { return stmt().getBigDecimal(parameterIndex, scale); } }); } @Override @Suspendable public byte[] getBytes(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<byte[], SQLException>() { @Override public byte[] call() throws SQLException { return stmt().getBytes(parameterIndex); } }); } @Override @Suspendable public Date getDate(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Date, SQLException>() { @Override public Date call() throws SQLException { return stmt().getDate(parameterIndex); } }); } @Override @Suspendable public Time getTime(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Time, SQLException>() { @Override public Time call() throws SQLException { return stmt().getTime(parameterIndex); } }); } @Override @Suspendable public Timestamp getTimestamp(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Timestamp, SQLException>() { @Override public Timestamp call() throws SQLException { return stmt().getTimestamp(parameterIndex); } }); } @Override @Suspendable public Object getObject(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Object, SQLException>() { @Override public Object call() throws SQLException { return stmt().getObject(parameterIndex); } }); } @Override @Suspendable public BigDecimal getBigDecimal(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<BigDecimal, SQLException>() { @Override public BigDecimal call() throws SQLException { return stmt().getBigDecimal(parameterIndex); } }); } @Override @Suspendable public Object getObject(final int parameterIndex, final Map<String, Class<?>> map) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Object, SQLException>() { @Override public Object call() throws SQLException { return stmt().getObject(parameterIndex, map); } }); } @Override @Suspendable public Ref getRef(final int parameterIndex) throws SQLException { final Ref ref = JDBCFiberAsync.exec(executor, new CheckedCallable<Ref, SQLException>() { @Override public Ref call() throws SQLException { return stmt().getRef(parameterIndex); } }); return new FiberRef(ref, executor); } @Override @Suspendable public Blob getBlob(final int parameterIndex) throws SQLException { final Blob blob = JDBCFiberAsync.exec(executor, new CheckedCallable<Blob, SQLException>() { @Override public Blob call() throws SQLException { return stmt().getBlob(parameterIndex); } }); return new FiberBlob(blob, executor); } @Override @Suspendable public Clob getClob(final int parameterIndex) throws SQLException { final Clob clob = JDBCFiberAsync.exec(executor, new CheckedCallable<Clob, SQLException>() { @Override public Clob call() throws SQLException { return stmt().getClob(parameterIndex); } }); return new FiberClob(clob, executor); } @Override @Suspendable public Array getArray(final int parameterIndex) throws SQLException { final Array array = JDBCFiberAsync.exec(executor, new CheckedCallable<Array, SQLException>() { @Override public Array call() throws SQLException { return stmt().getArray(parameterIndex); } }); return new FiberArray(array, executor); } @Override @Suspendable public Date getDate(final int parameterIndex, final Calendar cal) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Date, SQLException>() { @Override public Date call() throws SQLException { return stmt().getDate(parameterIndex, cal); } }); } @Override @Suspendable public Time getTime(final int parameterIndex, final Calendar cal) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Time, SQLException>() { @Override public Time call() throws SQLException { return stmt().getTime(parameterIndex, cal); } }); } @Override @Suspendable public Timestamp getTimestamp(final int parameterIndex, final Calendar cal) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Timestamp, SQLException>() { @Override public Timestamp call() throws SQLException { return stmt().getTimestamp(parameterIndex, cal); } }); } @Override @Suspendable public void registerOutParameter(final int parameterIndex, final int sqlType, final String typeName) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().registerOutParameter(parameterIndex, sqlType, typeName); return null; } }); } @Override @Suspendable public void registerOutParameter(final String parameterName, final int sqlType) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().registerOutParameter(parameterName, sqlType); return null; } }); } @Override @Suspendable public void registerOutParameter(final String parameterName, final int sqlType, final int scale) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().registerOutParameter(parameterName, sqlType, scale); return null; } }); } @Override @Suspendable public void registerOutParameter(final String parameterName, final int sqlType, final String typeName) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().registerOutParameter(parameterName, sqlType, typeName); return null; } }); } @Override @Suspendable public URL getURL(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<URL, SQLException>() { @Override public URL call() throws SQLException { return stmt().getURL(parameterIndex); } }); } @Override @Suspendable public void setURL(final int parameterIndex, final URL x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setURL(parameterIndex, x); return null; } }); } @Override @Suspendable public void setNull(final int parameterIndex, final int sqlType) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNull(parameterIndex, sqlType); return null; } }); } @Override @Suspendable public void setBoolean(final int parameterIndex, final boolean x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBoolean(parameterIndex, x); return null; } }); } @Override @Suspendable public void setByte(final int parameterIndex, final byte x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setByte(parameterIndex, x); return null; } }); } @Override @Suspendable public void setShort(final int parameterIndex, final short x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setShort(parameterIndex, x); return null; } }); } @Override @Suspendable public void setInt(final int parameterIndex, final int x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setInt(parameterIndex, x); return null; } }); } @Override @Suspendable public void setLong(final int parameterIndex, final long x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setLong(parameterIndex, x); return null; } }); } @Override @Suspendable public void setFloat(final int parameterIndex, final float x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setFloat(parameterIndex, x); return null; } }); } @Override @Suspendable public void setDouble(final int parameterIndex, final double x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setDouble(parameterIndex, x); return null; } }); } @Override @Suspendable public void setBigDecimal(final int parameterIndex, final BigDecimal x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBigDecimal(parameterIndex, x); return null; } }); } @Override @Suspendable public void setString(final int parameterIndex, final String x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setString(parameterIndex, x); return null; } }); } @Override @Suspendable public void setBytes(final int parameterIndex, final byte[] x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBytes(parameterIndex, x); return null; } }); } @Override @Suspendable public void setDate(final int parameterIndex, final Date x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setDate(parameterIndex, x); return null; } }); } @Override @Suspendable public void setTime(final int parameterIndex, final Time x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setTime(parameterIndex, x); return null; } }); } @Override @Suspendable public void setTimestamp(final int parameterIndex, final Timestamp x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setTimestamp(parameterIndex, x); return null; } }); } @Override @Suspendable public void setAsciiStream(final int parameterIndex, final InputStream x, final int length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setAsciiStream(parameterIndex, x, length); return null; } }); } @Override @Suspendable public void setBinaryStream(final int parameterIndex, final InputStream x, final int length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBinaryStream(parameterIndex, x, length); return null; } }); } @Override @Suspendable public void setObject(final int parameterIndex, final Object x, final int targetSqlType, final int scaleOrLength) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setObject(parameterIndex, x, targetSqlType, scaleOrLength); return null; } }); } @Override @Suspendable public void setObject(final int parameterIndex, final Object x, final int targetSqlType) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setObject(parameterIndex, x, targetSqlType); return null; } }); } @Override @Suspendable public void setObject(final int parameterIndex, final Object x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setObject(parameterIndex, x); return null; } }); } @Override @Suspendable public void setCharacterStream(final int parameterIndex, final Reader reader, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setCharacterStream(parameterIndex, reader, length); return null; } }); } @Override @Suspendable public void setDate(final int parameterIndex, final Date x, final Calendar cal) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setDate(parameterIndex, x, cal); return null; } }); } @Override @Suspendable public void setTime(final int parameterIndex, final Time x, final Calendar cal) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setTime(parameterIndex, x, cal); return null; } }); } @Override @Suspendable public void setTimestamp(final int parameterIndex, final Timestamp x, final Calendar cal) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setTimestamp(parameterIndex, x, cal); return null; } }); } @Override @Suspendable public void setNull(final int parameterIndex, final int sqlType, final String typeName) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNull(parameterIndex, sqlType, typeName); return null; } }); } @Override @Suspendable public String getString(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return stmt().getString(parameterName); } }); } @Override @Suspendable public boolean getBoolean(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Boolean, SQLException>() { @Override public Boolean call() throws SQLException { return stmt().getBoolean(parameterName); } }); } @Override @Suspendable public byte getByte(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Byte, SQLException>() { @Override public Byte call() throws SQLException { return stmt().getByte(parameterName); } }); } @Override @Suspendable public short getShort(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Short, SQLException>() { @Override public Short call() throws SQLException { return stmt().getShort(parameterName); } }); } @Override @Suspendable public int getInt(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Integer, SQLException>() { @Override public Integer call() throws SQLException { return stmt().getInt(parameterName); } }); } @Override @Suspendable public long getLong(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Long, SQLException>() { @Override public Long call() throws SQLException { return stmt().getLong(parameterName); } }); } @Override @Suspendable public float getFloat(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Float, SQLException>() { @Override public Float call() throws SQLException { return stmt().getFloat(parameterName); } }); } @Override @Suspendable public double getDouble(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Double, SQLException>() { @Override public Double call() throws SQLException { return stmt().getDouble(parameterName); } }); } @Override @Suspendable public byte[] getBytes(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<byte[], SQLException>() { @Override public byte[] call() throws SQLException { return stmt().getBytes(parameterName); } }); } @Override @Suspendable public Date getDate(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Date, SQLException>() { @Override public Date call() throws SQLException { return stmt().getDate(parameterName); } }); } @Override @Suspendable public Time getTime(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Time, SQLException>() { @Override public Time call() throws SQLException { return stmt().getTime(parameterName); } }); } @Override @Suspendable public Timestamp getTimestamp(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Timestamp, SQLException>() { @Override public Timestamp call() throws SQLException { return stmt().getTimestamp(parameterName); } }); } @Override @Suspendable public Object getObject(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Object, SQLException>() { @Override public Object call() throws SQLException { return stmt().getObject(parameterName); } }); } @Override @Suspendable public BigDecimal getBigDecimal(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<BigDecimal, SQLException>() { @Override public BigDecimal call() throws SQLException { return stmt().getBigDecimal(parameterName); } }); } @Override @Suspendable public Object getObject(final String parameterName, final Map<String, Class<?>> map) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Object, SQLException>() { @Override public Object call() throws SQLException { return stmt().getObject(parameterName, map); } }); } @Override @Suspendable public Ref getRef(final String parameterName) throws SQLException { final Ref ref = JDBCFiberAsync.exec(executor, new CheckedCallable<Ref, SQLException>() { @Override public Ref call() throws SQLException { return stmt().getRef(parameterName); } }); return new FiberRef(ref, executor); } @Override @Suspendable public Blob getBlob(final String parameterName) throws SQLException { final Blob blob = JDBCFiberAsync.exec(executor, new CheckedCallable<Blob, SQLException>() { @Override public Blob call() throws SQLException { return stmt().getBlob(parameterName); } }); return new FiberBlob(blob, executor); } @Override @Suspendable public Clob getClob(final String parameterName) throws SQLException { final Clob clob = JDBCFiberAsync.exec(executor, new CheckedCallable<Clob, SQLException>() { @Override public Clob call() throws SQLException { return stmt().getClob(parameterName); } }); return new FiberClob(clob, executor); } @Override @Suspendable public Array getArray(final String parameterName) throws SQLException { final Array array = JDBCFiberAsync.exec(executor, new CheckedCallable<Array, SQLException>() { @Override public Array call() throws SQLException { return stmt().getArray(parameterName); } }); return new FiberArray(array, executor); } @Override @Suspendable public Date getDate(final String parameterName, final Calendar cal) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Date, SQLException>() { @Override public Date call() throws SQLException { return stmt().getDate(parameterName, cal); } }); } @Override @Suspendable public Time getTime(final String parameterName, final Calendar cal) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Time, SQLException>() { @Override public Time call() throws SQLException { return stmt().getTime(parameterName, cal); } }); } @Override @Suspendable public Timestamp getTimestamp(final String parameterName, final Calendar cal) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Timestamp, SQLException>() { @Override public Timestamp call() throws SQLException { return stmt().getTimestamp(parameterName, cal); } }); } @Override @Suspendable public URL getURL(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<URL, SQLException>() { @Override public URL call() throws SQLException { return stmt().getURL(parameterName); } }); } @Override @Suspendable public RowId getRowId(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<RowId, SQLException>() { @Override public RowId call() throws SQLException { return stmt().getRowId(parameterIndex); } }); } @Override @Suspendable public RowId getRowId(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<RowId, SQLException>() { @Override public RowId call() throws SQLException { return stmt().getRowId(parameterName); } }); } @Override @Suspendable public NClob getNClob(final int parameterIndex) throws SQLException { final NClob clob = JDBCFiberAsync.exec(executor, new CheckedCallable<NClob, SQLException>() { @Override public NClob call() throws SQLException { return stmt().getNClob(parameterIndex); } }); return new FiberNClob(clob, executor); } @Override @Suspendable public NClob getNClob(final String parameterName) throws SQLException { final NClob clob = JDBCFiberAsync.exec(executor, new CheckedCallable<NClob, SQLException>() { @Override public NClob call() throws SQLException { return stmt().getNClob(parameterName); } }); return new FiberNClob(clob, executor); } @Override @Suspendable public SQLXML getSQLXML(final int parameterIndex) throws SQLException { final SQLXML sqlxml = JDBCFiberAsync.exec(executor, new CheckedCallable<SQLXML, SQLException>() { @Override public SQLXML call() throws SQLException { return stmt().getSQLXML(parameterIndex); } }); return new FiberSQLXML(sqlxml, executor); } @Override @Suspendable public SQLXML getSQLXML(final String parameterName) throws SQLException { final SQLXML sqlxml = JDBCFiberAsync.exec(executor, new CheckedCallable<SQLXML, SQLException>() { @Override public SQLXML call() throws SQLException { return stmt().getSQLXML(parameterName); } }); return new FiberSQLXML(sqlxml, executor); } @Override @Suspendable public String getNString(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return stmt().getString(parameterIndex); } }); } @Override @Suspendable public String getNString(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<String, SQLException>() { @Override public String call() throws SQLException { return stmt().getString(parameterName); } }); } @Override @Suspendable public Reader getNCharacterStream(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Reader, SQLException>() { @Override public Reader call() throws SQLException { return stmt().getNCharacterStream(parameterIndex); } }); } @Override @Suspendable public Reader getNCharacterStream(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Reader, SQLException>() { @Override public Reader call() throws SQLException { return stmt().getNCharacterStream(parameterName); } }); } @Override @Suspendable public Reader getCharacterStream(final int parameterIndex) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Reader, SQLException>() { @Override public Reader call() throws SQLException { return stmt().getCharacterStream(parameterIndex); } }); } @Override @Suspendable public Reader getCharacterStream(final String parameterName) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<Reader, SQLException>() { @Override public Reader call() throws SQLException { return stmt().getCharacterStream(parameterName); } }); } @Override @Suspendable public <T> T getObject(final int parameterIndex, final Class<T> type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<T, SQLException>() { @Override public T call() throws SQLException { return stmt().getObject(parameterIndex, type); } }); } @Override @Suspendable public <T> T getObject(final String parameterName, final Class<T> type) throws SQLException { return JDBCFiberAsync.exec(executor, new CheckedCallable<T, SQLException>() { @Override public T call() throws SQLException { return stmt().getObject(parameterName, type); } }); } @Override @Suspendable public void setRowId(final int parameterIndex, final RowId x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setRowId(parameterIndex, x); return null; } }); } @Override @Suspendable public void setNString(final int parameterIndex, final String value) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNString(parameterIndex, value); return null; } }); } @Override @Suspendable public void setNCharacterStream(final int parameterIndex, final Reader value, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNCharacterStream(parameterIndex, value, length); return null; } }); } @Override @Suspendable public void setNClob(final int parameterIndex, final NClob value) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNClob(parameterIndex, value); return null; } }); } @Override @Suspendable public void setClob(final int parameterIndex, final Reader reader, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setClob(parameterIndex, reader, length); return null; } }); } @Override @Suspendable public void setBlob(final int parameterIndex, final InputStream inputStream, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBlob(parameterIndex, inputStream, length); return null; } }); } @Override @Suspendable public void setNClob(final int parameterIndex, final Reader reader, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNClob(parameterIndex, reader, length); return null; } }); } @Override @Suspendable public void setSQLXML(final int parameterIndex, final SQLXML xmlObject) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setSQLXML(parameterIndex, xmlObject); return null; } }); } @Override @Suspendable public void setBlob(final int parameterIndex, final Blob x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBlob(parameterIndex, x); return null; } }); } @Override @Suspendable public void setClob(final int parameterIndex, final Clob x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setClob(parameterIndex, x); return null; } }); } @Override @Suspendable public void setAsciiStream(final int parameterIndex, final InputStream x, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setAsciiStream(parameterIndex, x, length); return null; } }); } @Override @Suspendable public void setBinaryStream(final int parameterIndex, final InputStream x, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBinaryStream(parameterIndex, x, length); return null; } }); } @Override @Suspendable public void setAsciiStream(final int parameterIndex, final InputStream x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setAsciiStream(parameterIndex, x); return null; } }); } @Override @Suspendable public void setBinaryStream(final int parameterIndex, final InputStream x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBinaryStream(parameterIndex, x); return null; } }); } @Override @Suspendable public void setCharacterStream(final int parameterIndex, final Reader reader) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setCharacterStream(parameterIndex, reader); return null; } }); } @Override @Suspendable public void setNCharacterStream(final int parameterIndex, final Reader value) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNCharacterStream(parameterIndex, value); return null; } }); } @Override @Suspendable public void setClob(final int parameterIndex, final Reader reader) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setClob(parameterIndex, reader); return null; } }); } @Override @Suspendable public void setBlob(final int parameterIndex, final InputStream inputStream) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBlob(parameterIndex, inputStream); return null; } }); } @Override @Suspendable public void setNClob(final int parameterIndex, final Reader reader) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNClob(parameterIndex, reader); return null; } }); } @Override @Suspendable public void setURL(final String parameterName, final URL val) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setURL(parameterName, val); return null; } }); } @Override @Suspendable public void setNull(final String parameterName, final int sqlType) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNull(parameterName, sqlType); return null; } }); } @Override @Suspendable public void setBoolean(final String parameterName, final boolean x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBoolean(parameterName, x); return null; } }); } @Override @Suspendable public void setByte(final String parameterName, final byte x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setByte(parameterName, x); return null; } }); } @Override @Suspendable public void setShort(final String parameterName, final short x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setShort(parameterName, x); return null; } }); } @Override @Suspendable public void setInt(final String parameterName, final int x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setInt(parameterName, x); return null; } }); } @Override @Suspendable public void setLong(final String parameterName, final long x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setLong(parameterName, x); return null; } }); } @Override @Suspendable public void setFloat(final String parameterName, final float x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setFloat(parameterName, x); return null; } }); } @Override @Suspendable public void setDouble(final String parameterName, final double x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setDouble(parameterName, x); return null; } }); } @Override @Suspendable public void setBigDecimal(final String parameterName, final BigDecimal x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBigDecimal(parameterName, x); return null; } }); } @Override @Suspendable public void setString(final String parameterName, final String x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setString(parameterName, x); return null; } }); } @Override @Suspendable public void setBytes(final String parameterName, final byte[] x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBytes(parameterName, x); return null; } }); } @Override @Suspendable public void setDate(final String parameterName, final Date x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setDate(parameterName, x); return null; } }); } @Override @Suspendable public void setTime(final String parameterName, final Time x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setTime(parameterName, x); return null; } }); } @Override @Suspendable public void setTimestamp(final String parameterName, final Timestamp x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setTimestamp(parameterName, x); return null; } }); } @Override @Suspendable public void setAsciiStream(final String parameterName, final InputStream x, final int length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setAsciiStream(parameterName, x, length); return null; } }); } @Override @Suspendable public void setBinaryStream(final String parameterName, final InputStream x, final int length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBinaryStream(parameterName, x, length); return null; } }); } @Override @Suspendable public void setObject(final String parameterName, final Object x, final int targetSqlType, final int scale) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setObject(parameterName, x, targetSqlType, scale); return null; } }); } @Override @Suspendable public void setObject(final String parameterName, final Object x, final int targetSqlType) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setObject(parameterName, x, targetSqlType); return null; } }); } @Override @Suspendable public void setObject(final String parameterName, final Object x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setObject(parameterName, x); return null; } }); } @Override @Suspendable public void setCharacterStream(final String parameterName, final Reader reader, final int length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setCharacterStream(parameterName, reader, length); return null; } }); } @Override @Suspendable public void setDate(final String parameterName, final Date x, final Calendar cal) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setDate(parameterName, x, cal); return null; } }); } @Override @Suspendable public void setTime(final String parameterName, final Time x, final Calendar cal) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setTime(parameterName, x, cal); return null; } }); } @Override @Suspendable public void setTimestamp(final String parameterName, final Timestamp x, final Calendar cal) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setTimestamp(parameterName, x, cal); return null; } }); } @Override @Suspendable public void setNull(final String parameterName, final int sqlType, final String typeName) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNull(parameterName, sqlType, typeName); return null; } }); } @Override @Suspendable public void setRowId(final String parameterName, final RowId x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setRowId(parameterName, x); return null; } }); } @Override @Suspendable public void setNString(final String parameterName, final String value) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNString(parameterName, value); return null; } }); } @Override @Suspendable public void setNCharacterStream(final String parameterName, final Reader value, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNCharacterStream(parameterName, value, length); return null; } }); } @Override @Suspendable public void setNClob(final String parameterName, final NClob value) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNClob(parameterName, value); return null; } }); } @Override @Suspendable public void setClob(final String parameterName, final Reader reader, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setClob(parameterName, reader, length); return null; } }); } @Override @Suspendable public void setBlob(final String parameterName, final InputStream inputStream, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBlob(parameterName, inputStream, length); return null; } }); } @Override @Suspendable public void setNClob(final String parameterName, final Reader reader, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNClob(parameterName, reader, length); return null; } }); } @Override @Suspendable public void setSQLXML(final String parameterName, final SQLXML xmlObject) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setSQLXML(parameterName, xmlObject); return null; } }); } @Override @Suspendable public void setBlob(final String parameterName, final Blob x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBlob(parameterName, x); return null; } }); } @Override @Suspendable public void setClob(final String parameterName, final Clob x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setClob(parameterName, x); return null; } }); } @Override @Suspendable public void setAsciiStream(final String parameterName, final InputStream x, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setAsciiStream(parameterName, x, length); return null; } }); } @Override @Suspendable public void setBinaryStream(final String parameterName, final InputStream x, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBinaryStream(parameterName, x, length); return null; } }); } @Override @Suspendable public void setCharacterStream(final String parameterName, final Reader reader, final long length) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setCharacterStream(parameterName, reader, length); return null; } }); } @Override @Suspendable public void setAsciiStream(final String parameterName, final InputStream x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setAsciiStream(parameterName, x); return null; } }); } @Override @Suspendable public void setBinaryStream(final String parameterName, final InputStream x) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBinaryStream(parameterName, x); return null; } }); } @Override @Suspendable public void setCharacterStream(final String parameterName, final Reader reader) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setCharacterStream(parameterName, reader); return null; } }); } @Override @Suspendable public void setNCharacterStream(final String parameterName, final Reader value) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNCharacterStream(parameterName, value); return null; } }); } @Override @Suspendable public void setClob(final String parameterName, final Reader reader) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setClob(parameterName, reader); return null; } }); } @Override @Suspendable public void setBlob(final String parameterName, final InputStream inputStream) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setBlob(parameterName, inputStream); return null; } }); } @Override @Suspendable public void setNClob(final String parameterName, final Reader reader) throws SQLException { JDBCFiberAsync.exec(executor, new CheckedCallable<Void, SQLException>() { @Override public Void call() throws SQLException { stmt().setNClob(parameterName, reader); return null; } }); } @Override public int hashCode() { return stmt().hashCode(); } @SuppressWarnings("EqualsWhichDoesntCheckParameterClass") @Override public boolean equals(Object obj) { return stmt().equals(obj); } @Override public String toString() { return stmt().toString(); } }