/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * 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.ogm.boot.impl; import org.hibernate.boot.SessionFactoryBuilder; import org.hibernate.boot.spi.AbstractDelegatingSessionFactoryBuilder; import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.boot.spi.SessionFactoryBuilderImplementor; import org.hibernate.internal.SessionFactoryImpl; import org.hibernate.ogm.OgmSessionFactory; import org.hibernate.ogm.boot.OgmSessionFactoryBuilder; import org.hibernate.ogm.hibernatecore.impl.OgmSessionFactoryImpl; import org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode; /** * {@link SessionFactoryBuilder} building tge {@link OgmSessionFactory}. * * @author Gunnar Morling */ public class OgmSessionFactoryBuilderImpl extends AbstractDelegatingSessionFactoryBuilder<OgmSessionFactoryBuilderImpl> implements OgmSessionFactoryBuilder { private final SessionFactoryBuilderImplementor delegate; private final MetadataImplementor metadata; public OgmSessionFactoryBuilderImpl(MetadataImplementor metadata, SessionFactoryBuilderImplementor delegate) { super( delegate ); this.metadata = metadata; this.delegate = delegate; } @Override protected OgmSessionFactoryBuilderImpl getThis() { return this; } @Override public <T extends SessionFactoryBuilder> T unwrap(Class<T> type) { if ( type.isAssignableFrom( getClass() ) ) { return type.cast( this ); } else { return delegate.unwrap( type ); } } @Override public OgmSessionFactory build() { OgmSessionFactoryOptions options = new OgmSessionFactoryOptions( delegate.buildSessionFactoryOptions() ); return new OgmSessionFactoryImpl( new SessionFactoryImpl( metadata, options ) ); } @Override public SessionFactoryBuilder applyConnectionHandlingMode(PhysicalConnectionHandlingMode connectionHandlingMode) { return delegate.applyConnectionHandlingMode( connectionHandlingMode ); } }