1
package org.hibernate.test.usercollection.parameterized;
3
import java.util.Iterator;
5
import java.util.Properties;
8
import org.hibernate.usertype.UserCollectionType;
9
import org.hibernate.usertype.ParameterizedType;
10
import org.hibernate.collection.PersistentCollection;
11
import org.hibernate.engine.SessionImplementor;
12
import org.hibernate.persister.collection.CollectionPersister;
13
import org.hibernate.EntityMode;
16
* Our Hibernate type-system extension for defining our specialized collection
19
* @author Holger Brands
20
* @author Steve Ebersole
22
public class DefaultableListType implements UserCollectionType, ParameterizedType {
23
private String defaultValue;
25
public Object instantiate(int anticipatedSize) {
26
DefaultableListImpl list = anticipatedSize < 0 ? new DefaultableListImpl() : new DefaultableListImpl( anticipatedSize );
27
list.setDefaultValue( defaultValue );
31
public PersistentCollection instantiate(
32
SessionImplementor session,
33
CollectionPersister persister) {
34
return new PersistentDefaultableList( session );
37
public PersistentCollection wrap(SessionImplementor session, Object collection) {
38
if ( session.getEntityMode() == EntityMode.DOM4J ) {
39
throw new IllegalStateException( "dom4j not supported" );
42
return new PersistentDefaultableList( session, ( List ) collection );
46
public Iterator getElementsIterator(Object collection) {
47
return ( ( DefaultableList ) collection ).iterator();
50
public boolean contains(Object collection, Object entity) {
51
return ( ( DefaultableList ) collection ).contains( entity );
54
public Object indexOf(Object collection, Object entity) {
55
int index = ( ( DefaultableList ) collection ).indexOf( entity );
56
return index >= 0 ? new Integer( index ) : null;
59
public Object replaceElements(
62
CollectionPersister persister,
65
SessionImplementor session) {
66
DefaultableList result = ( DefaultableList ) target;
68
result.addAll( ( DefaultableList ) original );
72
public void setParameterValues(Properties parameters) {
73
defaultValue = parameters.getProperty( "default" );