/* * 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.test.annotations.various; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Property; import org.hibernate.type.DbTimestampType; import org.hibernate.type.TimestampType; import org.hibernate.testing.AfterClassOnce; import org.hibernate.testing.BeforeClassOnce; import org.hibernate.testing.junit4.BaseUnitTestCase; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; /** * Test for the @Timestamp annotation. * * @author Hardy Ferentschik */ public class TimestampTest extends BaseUnitTestCase { private StandardServiceRegistry ssr; private MetadataImplementor metadata; @BeforeClassOnce public void setUp() { ssr = new StandardServiceRegistryBuilder().build(); metadata = (MetadataImplementor) new MetadataSources( ssr ) .addAnnotatedClass( VMTimestamped.class ) .addAnnotatedClass( DBTimestamped.class ) .getMetadataBuilder() .build(); } @AfterClassOnce public void tearDown() { if ( ssr != null ) { StandardServiceRegistryBuilder.destroy( ssr ); } } @Test public void testTimestampSourceIsVM() throws Exception { assertTimestampSource( VMTimestamped.class, TimestampType.class ); } @Test public void testTimestampSourceIsDB() throws Exception { assertTimestampSource( DBTimestamped.class, DbTimestampType.class ); } private void assertTimestampSource(Class<?> clazz, Class<?> expectedTypeClass) throws Exception { PersistentClass persistentClass = metadata.getEntityBinding( clazz.getName() ); assertNotNull( persistentClass ); Property versionProperty = persistentClass.getVersion(); assertNotNull( versionProperty ); assertEquals( "Wrong timestamp type", expectedTypeClass, versionProperty.getType().getClass() ); } }