You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by ep...@apache.org on 2003/06/27 16:27:22 UTC
cvs commit: jakarta-turbine-2/proposals/epugh/hibernate readme.txt
epugh 2003/06/27 07:27:22
Added: proposals/epugh/hibernate/org/apache/turbine/util/hibernate
PersistenceException.java HibernateFilter.java
HibernateUtils.java
proposals/epugh/hibernate readme.txt
Log:
Adding proposal to integrate Hibernate support files more closely into
Turbine.
Revision Changes Path
1.1 jakarta-turbine-2/proposals/epugh/hibernate/org/apache/turbine/util/hibernate/PersistenceException.java
Index: PersistenceException.java
===================================================================
package org.apache.turbine.util.hibernate;
import org.apache.commons.lang.exception.NestableException;
/**
* A general PersistenceException that can be thrown by
* Hibernate DAO classes.
*
*/
public class PersistenceException extends NestableException
{
//~ Constructors ===========================================================
/**
* Constructor for PersistenceException.
*/
public PersistenceException()
{
super();
}
/**
* Constructor for PersistenceException.
*
* @param message
*/
public PersistenceException(String message)
{
super(message);
}
/**
* Constructor for PersistenceException.
*
* @param message
* @param cause
*/
public PersistenceException(String message, Throwable cause)
{
super(message, cause);
}
/**
* Constructor for PersistenceException.
*
* @param cause
*/
public PersistenceException(Throwable cause)
{
super(cause);
}
}
1.1 jakarta-turbine-2/proposals/epugh/hibernate/org/apache/turbine/util/hibernate/HibernateFilter.java
Index: HibernateFilter.java
===================================================================
package org.apache.turbine.util.hibernate;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sf.hibernate.Session;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class HibernateFilter implements Filter
{
//~ Static fields/initializers =============================================
//~ Instance fields ========================================================
/**
* The <code>Log</code> instance for this class
*/
private Log log = LogFactory.getLog(HibernateFilter.class);
private FilterConfig filterConfig = null;
//~ Methods ================================================================
public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
}
/**
* Destroys the filter.
*/
public void destroy()
{
filterConfig = null;
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException
{
// cast to the types I want to use
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession(true);
Session ses = null;
boolean sessionCreated = false;
try
{
chain.doFilter(request, response);
}
finally
{
try
{
HibernateUtils.closeSession();
}
catch (Exception exc)
{
log.error("Error closing hibernate session.", exc);
exc.printStackTrace();
}
}
}
public static Session getSession() throws PersistenceException
{
try
{
return HibernateUtils.currentSession();
}
catch (Exception e)
{
throw new PersistenceException("Could not find current Hibernate session.", e);
}
}
}
1.1 jakarta-turbine-2/proposals/epugh/hibernate/org/apache/turbine/util/hibernate/HibernateUtils.java
Index: HibernateUtils.java
===================================================================
package org.apache.turbine.util.hibernate;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.JDBCException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* This class is used to get Hibernate Sessions and may
* also contain methods (in the future) to get DBConnections
* or Transactions from JNDI.
*/
public class HibernateUtils
{
//~ Static fields/initializers =============================================
public final static String SESSION_FACTORY = "hibernate/sessionFactory";
public static final ThreadLocal session = new ThreadLocal();
private static SessionFactory sf = null;
private static HibernateUtils me;
private static Log log = LogFactory.getLog(HibernateUtils.class);
static {
try
{
me = new HibernateUtils();
}
catch (Exception e)
{
log.fatal("Error occurred initializing HibernateUtils");
e.printStackTrace();
}
}
//~ Constructors ===========================================================
private HibernateUtils() throws HibernateException, JDBCException
{}
//~ Methods ================================================================
public static Session currentSession() throws PersistenceException
{
Session s = (Session) session.get();
if (s == null)
{
s = PersistenceManager.openSession();
if (log.isDebugEnabled())
{
log.debug("Opened hibernate session.");
}
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException, JDBCException
{
Session s = (Session) session.get();
session.set(null);
if (s != null)
{
if (s.isOpen())
{
s.flush();
s.close();
if (log.isDebugEnabled())
{
log.debug("Closed hibernate session.");
}
}
}
else
{
log.warn("Hibernate session was inadvertently already closed.");
}
}
}
1.1 jakarta-turbine-2/proposals/epugh/hibernate/readme.txt
Index: readme.txt
===================================================================
To use this code, you need to add this section to your project.xml dependencies. Note, you may have some
already!
<dependency>
<id>avalon-framework</id>
<version>4.1.4</version>
<url>http://jakarta.apache.org/avalon</url>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>excalibur-collections</id>
<version>1.0</version>
<url>http://jakarta.apache.org/avalon</url>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>excalibur-component</id>
<version>1.1</version>
<url>http://jakarta.apache.org/avalon</url>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>excalibur-instrument</id>
<version>1.0</version>
<url>http://jakarta.apache.org/avalon</url>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>excalibur-logger</id>
<version>1.0.1</version>
<url>http://jakarta.apache.org/avalon</url>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>excalibur-pool</id>
<version>1.2</version>
<url>http://jakarta.apache.org/avalon</url>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>log4j</id>
<version>1.2.7</version>
<url>http://jakarta.apache.org/log4j/</url>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>logkit</id>
<version>1.0.1</version>
<url>http://jakarta.apache.org/avalon/logkit/</url>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<!--
<dependency>
<id>fulcrum</id>
<version>SNAPSHOT</version>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
-->
<dependency>
<id>hibernate</id>
<version>2.0-final</version>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>hibernate:hibernate-avalon</id>
<version>0.1</version>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>odmg</id>
<version>3.0</version>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>bcel</id>
<version>5.0</version>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>dom4j</id>
<version>1.4</version>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>cglib</id>
<version>1.0</version>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
<dependency>
<id>jcs</id>
<version>1.0-dev</version>
<properties>
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
You will also need to add this to your web.xml:
<filter>
<filter-name>Hibernate Session Filter</filter-name>
<filter-class>org.apache.turbine.util.hibernate.HibernateFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Hibernate Session Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Thanks, Eric (epugh@upstate.com)
---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org