/* * HeadsUp Agile * Copyright 2009-2012 Heads Up Development Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.headsupdev.agile.web; import org.apache.wicket.protocol.http.WebRequestCycle; import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.Response; import org.apache.wicket.Request; import org.hibernate.Session; import org.headsupdev.agile.storage.HibernateStorage; /** * A custom request cycle that creates a hibernate session and storage for each request anc closes / commits when done. * * @author Andrew Williams * @version $Id$ * @since 1.0 */ public class HibernateRequestCycle extends WebRequestCycle { private HibernateStorage storage; public HibernateRequestCycle( WebApplication application, Request request, Response response ) { super( application, (WebRequest) request, response ); } @Override protected void onBeginRequest() { storage = new HibernateStorage(); storage.enterScope( getRequest() ); } @Override protected void onEndRequest() { storage.exitScope( getRequest() ); } public Session getHibernateSession() { return storage.getHibernateSession(); } }