package org.hibernate.test.instrument.domain;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Arrays;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.type.StandardBasicTypes;
import org.hibernate.usertype.UserType;
/**
* A simple byte[]-based custom type.
*/
public class CustomBlobType implements UserType {
/**
* {@inheritDoc}
*/
public Object nullSafeGet(ResultSet rs, String names[], SessionImplementor session, Object owner) throws SQLException {
// cast just to make sure...
return StandardBasicTypes.BINARY.nullSafeGet( rs, names[0], session );
}
/**
* {@inheritDoc}
*/
public void nullSafeSet(PreparedStatement ps, Object value, int index, SessionImplementor session) throws SQLException, HibernateException {
// cast just to make sure...
StandardBasicTypes.BINARY.nullSafeSet( ps, value, index, session );
}
/**
* {@inheritDoc}
*/
public Object deepCopy(Object value) {
byte result[] = null;
if ( value != null ) {
byte bytes[] = ( byte[] ) value;
result = new byte[bytes.length];
System.arraycopy( bytes, 0, result, 0, bytes.length );
}
return result;
}
/**
* {@inheritDoc}
*/
public boolean isMutable() {
return true;
}
/**
* {@inheritDoc}
*/
public int[] sqlTypes() {
return new int[] { Types.VARBINARY };
}
/**
* {@inheritDoc}
*/
public Class returnedClass() {
return byte[].class;
}
/**
* {@inheritDoc}
*/
public boolean equals(Object x, Object y) {
return Arrays.equals( ( byte[] ) x, ( byte[] ) y );
}
/**
* {@inheritDoc}
*/
public Object assemble(Serializable arg0, Object arg1)
throws HibernateException {
return null;
}
/**
* {@inheritDoc}
*/
public Serializable disassemble(Object arg0)
throws HibernateException {
return null;
}
/**
* {@inheritDoc}
*/
public int hashCode(Object arg0)
throws HibernateException {
return 0;
}
/**
* {@inheritDoc}
*/
public Object replace(Object arg0, Object arg1, Object arg2)
throws HibernateException {
return null;
}
}