package dbfit.environment; import java.sql.SQLException; import dbfit.util.TypeTransformer; public class OracleSerialClobNormaliser implements TypeTransformer { private static final int MAX_CLOB_LENGTH = 10000; @Override public Object transform(Object o) throws SQLException { if (o == null) return null; if (!(o instanceof oracle.jdbc.rowset.OracleSerialClob)) { throw new UnsupportedOperationException( "OracleSerialClobNormaliser cannot work with " + o.getClass()); } oracle.jdbc.rowset.OracleSerialClob clob = (oracle.jdbc.rowset.OracleSerialClob) o; if (clob.length() > MAX_CLOB_LENGTH) throw new UnsupportedOperationException("Clobs larger than " + MAX_CLOB_LENGTH + " bytes are not supported by DBFIT"); return clob.getSubString(1, (int)clob.length()); } }