/* * 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.backendtck.loader; import static org.fest.assertions.Assertions.assertThat; import static org.hibernate.ogm.utils.TestHelper.extractEntityTuple; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.hibernate.LockOptions; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.ogm.datastore.map.impl.MapTupleSnapshot; import org.hibernate.ogm.loader.impl.OgmLoader; import org.hibernate.ogm.loader.impl.OgmLoadingContext; import org.hibernate.ogm.model.impl.DefaultEntityKeyMetadata; import org.hibernate.ogm.model.key.spi.EntityKey; import org.hibernate.ogm.model.spi.Tuple; import org.hibernate.ogm.model.spi.Tuple.SnapshotType; import org.hibernate.ogm.persister.impl.OgmEntityPersister; import org.hibernate.ogm.utils.OgmTestCase; import org.hibernate.persister.entity.EntityPersister; import org.junit.Test; /** * @author Emmanuel Bernard <emmanuel@hibernate.org> */ public class LoaderFromTupleTest extends OgmTestCase { @Test public void testLoadingFromTuple() throws Exception { final Session session = openSession(); Transaction transaction = session.beginTransaction(); Feeling feeling = new Feeling(); feeling.setName( "Moody" ); session.persist( feeling ); transaction.commit(); session.clear(); transaction = session.beginTransaction(); EntityKey key = new EntityKey( new DefaultEntityKeyMetadata( "Feeling", new String[] { "UUID" } ), new Object[] { feeling.getUUID() } ); Map<String, Object> entityTuple = extractEntityTuple( session, key ); final Tuple tuple = new Tuple( new MapTupleSnapshot( entityTuple ), SnapshotType.UPDATE ); EntityPersister persister = ( (SessionFactoryImplementor) session.getSessionFactory() ) .getEntityPersister( Feeling.class.getName() ); OgmLoader loader = new OgmLoader( new OgmEntityPersister[] { (OgmEntityPersister) persister }, 1 ); OgmLoadingContext ogmLoadingContext = new OgmLoadingContext(); List<Tuple> tuples = new ArrayList<Tuple>(); tuples.add( tuple ); ogmLoadingContext.setTuples( tuples ); List<Object> entities = loader.loadEntitiesFromTuples( (SessionImplementor) session, LockOptions.NONE, ogmLoadingContext ); assertThat( entities.size() ).isEqualTo( 1 ); assertThat( ( (Feeling) entities.get( 0 ) ).getName() ).isEqualTo( "Moody" ); transaction.commit(); session.close(); } @Override protected Class<?>[] getAnnotatedClasses() { return new Class<?>[] { Feeling.class }; } }