package org.jboss.tools.hibernate.runtime.v_3_5.internal; import java.util.Map; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.metadata.ClassMetadata; import org.hibernate.metadata.CollectionMetadata; import org.jboss.tools.hibernate.runtime.common.IFacade; import org.jboss.tools.hibernate.runtime.common.IFacadeFactory; import org.jboss.tools.hibernate.runtime.spi.IClassMetadata; import org.jboss.tools.hibernate.runtime.spi.ICollectionMetadata; import org.jboss.tools.hibernate.runtime.spi.ISession; import org.jboss.tools.hibernate.runtime.spi.ISessionFactory; import org.jboss.tools.hibernate.runtime.v_3_5.internal.test.Foo; import org.junit.Assert; import org.junit.Test; public class SessionFactoryFacadeTest { private static IFacadeFactory FACADE_FACTORY = new FacadeFactoryImpl(); @Test public void testClose() { Configuration configuration = new Configuration(); SessionFactory sessionFactory = configuration.buildSessionFactory(); sessionFactory.openSession(); ISessionFactory sessionFactoryFacade = FACADE_FACTORY.createSessionFactory(sessionFactory); Assert.assertFalse(sessionFactory.isClosed()); sessionFactoryFacade.close(); Assert.assertTrue(sessionFactory.isClosed()); } @Test public void testGetAllClassMetadata() throws Exception { Configuration configuration = new Configuration(); SessionFactory sessionFactory = configuration.buildSessionFactory(); ISessionFactory sessionFactoryFacade = FACADE_FACTORY.createSessionFactory(sessionFactory); Assert.assertTrue(sessionFactoryFacade.getAllClassMetadata().isEmpty()); sessionFactory.close(); configuration.addClass(Foo.class); sessionFactory = configuration.buildSessionFactory(); sessionFactoryFacade = FACADE_FACTORY.createSessionFactory(sessionFactory); Map<String, IClassMetadata> allClassMetaData = sessionFactoryFacade.getAllClassMetadata(); Assert.assertNotNull( allClassMetaData.get( "org.jboss.tools.hibernate.runtime.v_3_5.internal.test.Foo")); } @Test public void testGetAllCollectionMetadata() { Configuration configuration = new Configuration(); SessionFactory sessionFactory = configuration.buildSessionFactory(); ISessionFactory sessionFactoryFacade = FACADE_FACTORY.createSessionFactory(sessionFactory); Assert.assertTrue(sessionFactoryFacade.getAllCollectionMetadata().isEmpty()); sessionFactory.close(); configuration.addClass(Foo.class); sessionFactory = configuration.buildSessionFactory(); sessionFactoryFacade = FACADE_FACTORY.createSessionFactory(sessionFactory); Map<String, ICollectionMetadata> allCollectionMetaData = sessionFactoryFacade.getAllCollectionMetadata(); Assert.assertNotNull( allCollectionMetaData.get( "org.jboss.tools.hibernate.runtime.v_3_5.internal.test.Foo.bars")); } @Test public void testOpenSession() { Configuration configuration = new Configuration(); SessionFactory sessionFactory = configuration.buildSessionFactory(); ISessionFactory sessionFactoryFacade = FACADE_FACTORY.createSessionFactory(sessionFactory); ISession sessionFacade = sessionFactoryFacade.openSession(); Session session = (Session)((IFacade)sessionFacade).getTarget(); Assert.assertSame(sessionFactory, session.getSessionFactory()); } @Test public void testGetClassMetadata() { Configuration configuration = new Configuration(); configuration.addClass(Foo.class); SessionFactory sessionFactory = configuration.buildSessionFactory(); ClassMetadata classMetadata = sessionFactory.getClassMetadata(Foo.class); ISessionFactory sessionFactoryFacade = FACADE_FACTORY.createSessionFactory(sessionFactory); Assert.assertSame( classMetadata, ((IFacade)sessionFactoryFacade.getClassMetadata(Foo.class)).getTarget()); Assert.assertSame( classMetadata, ((IFacade)sessionFactoryFacade.getClassMetadata( "org.jboss.tools.hibernate.runtime.v_3_5.internal.test.Foo")) .getTarget()); } @Test public void testGetCollectionMetadata() { Configuration configuration = new Configuration(); configuration.addClass(Foo.class); SessionFactory sessionFactory = configuration.buildSessionFactory(); ISessionFactory sessionFactoryFacade = FACADE_FACTORY.createSessionFactory(sessionFactory); CollectionMetadata collectionMetadata = sessionFactory.getCollectionMetadata( "org.jboss.tools.hibernate.runtime.v_3_5.internal.test.Foo.bars"); Assert.assertSame( collectionMetadata, ((IFacade)sessionFactoryFacade.getCollectionMetadata( "org.jboss.tools.hibernate.runtime.v_3_5.internal.test.Foo.bars")) .getTarget()); } }