/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.type;
import java.io.
Serializable;
import java.util.
ArrayList;
import java.util.
List;
import org.hibernate.collection.internal.
PersistentList;
import org.hibernate.collection.spi.
PersistentCollection;
import org.hibernate.engine.spi.
SharedSessionContractImplementor;
import org.hibernate.persister.collection.
CollectionPersister;
public class
ListType extends
CollectionType {
public
ListType(
TypeFactory.
TypeScope typeScope,
String role,
String propertyRef) {
super(
typeScope,
role,
propertyRef );
}
@
Override
public
PersistentCollection instantiate(
SharedSessionContractImplementor session,
CollectionPersister persister,
Serializable key) {
return new
PersistentList(
session );
}
@
Override
public
Class getReturnedClass() {
return
List.class;
}
@
Override
public
PersistentCollection wrap(
SharedSessionContractImplementor session,
Object collection) {
return new
PersistentList(
session, (
List)
collection );
}
@
Override
public
Object instantiate(int
anticipatedSize) {
return
anticipatedSize <= 0 ? new
ArrayList() : new
ArrayList(
anticipatedSize + 1 );
}
@
Override
public
Object indexOf(
Object collection,
Object element) {
List list = (
List)
collection;
for ( int
i=0;
i<
list.
size();
i++ ) {
//TODO: proxies!
if (
list.
get(
i)==
element ) {
return
i;
}
}
return null;
}
}