/**
 * Petals View - Functional Supervision.
 * Copyright (c) 2010 EBM Websourcing, http://www.ebmwebsourcing.com/
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * -------------------------------------------------------------------------
 * CommonServiceConfig.java
 * -------------------------------------------------------------------------
 */

package com.ebmwebsourcing.petalsview.service;

import javax.annotation.Resource;

import junit.framework.Assert;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.BeforeClass;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.transaction.AfterTransaction;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author ofabre - eBM Websourcing
 * 
 */
@ContextConfiguration(locations = { "classpath:petals-view-annotation.xml",
        "classpath:petals-view-hibernate.xml", "classpath:petals-view-jdbc.xml",
        "classpath:petals-view-transaction.xml" })
@Transactional
public class CommonServiceConfig extends Assert {

    public static final String TRANSFORMER_FACTORY = "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl";

    @SuppressWarnings("unused")
	private final Logger logger = Logger.getLogger(this.getClass());

    @Resource
    private SessionFactory sessionFactory;

    public Session getHibernateSession() {
        return org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(sessionFactory,
                false);
        // return sessionFactory.getCurrentSession();
    }

    @BeforeClass
    public static void beforeClass() {
        System.setProperty("javax.xml.transform.TransformerFactory", TRANSFORMER_FACTORY);
        System.setProperty("petalsViewConfig", "classpath:petals-view.properties");
    }

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    @AfterTransaction
    public void after() {

    }

}
