package uk.ac.cam.echo.server.filters; import org.hibernate.Session; import org.hibernate.Transaction; import uk.ac.cam.echo.server.HibernateUtil; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.core.Response; import java.io.IOException; public class HibernateResponseFilter implements ContainerResponseFilter{ @Override public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException { if (!(containerResponseContext.getEntity() instanceof Response || containerResponseContext.getEntity() == null)) return ; Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction transaction = session.getTransaction(); if (transaction.isActive()) { System.out.println("Commiting Transaction"); session.getTransaction().commit(); } } }