/*
 * 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.cache.cfg.internal;

import java.util.Comparator;

import org.hibernate.cache.cfg.spi.CollectionDataCachingConfig;
import org.hibernate.cache.spi.access.AccessType;
import org.hibernate.mapping.Collection;
import org.hibernate.metamodel.model.domain.NavigableRole;
import org.hibernate.type.VersionType;

Author:Steve Ebersole
/** * @author Steve Ebersole */
public class CollectionDataCachingConfigImpl extends AbstractDomainDataCachingConfig implements CollectionDataCachingConfig { private final Collection collectionDescriptor; private final NavigableRole navigableRole; public CollectionDataCachingConfigImpl( Collection collectionDescriptor, AccessType accessType) { super( accessType ); this.collectionDescriptor = collectionDescriptor; this.navigableRole = new NavigableRole( collectionDescriptor.getRole() ); } @Override public boolean isMutable() { return collectionDescriptor.isMutable(); } @Override public boolean isVersioned() { return collectionDescriptor.getOwner().isVersioned(); } @Override public Comparator getOwnerVersionComparator() { if ( !isVersioned() ) { return null; } return ( (VersionType) collectionDescriptor.getOwner().getVersion().getType() ).getComparator(); } @Override public NavigableRole getNavigableRole() { return navigableRole; } }