/**
* Created on Sep 8, 2005
*
* $Id: UserTxSessionHolder.java,v 1.3 2008/01/29 12:28:22 coliny Exp $
* $Revision: 1.3 $
*/
package org.springmodules.jcr.jackrabbit.support;
import javax.jcr.Session;
import javax.transaction.UserTransaction;
import org.apache.jackrabbit.api.XASession;
import org.springmodules.jcr.SessionHolder;
/**
* Extension of Session Holder which includes a UserTransaction which handles
* the XASession returned by the JackRabbit repository implementation.
*
* @see org.springmodules.jcr.jackrabbit.support.JackRabbitUserTransaction
* @author Costin Leau
*
*/
public class UserTxSessionHolder extends SessionHolder {
private UserTransaction transaction;
/**
* @param session
*/
public UserTxSessionHolder(Session session) {
super(session);
}
/**
* @return Returns the transaction.
*/
public UserTransaction getTransaction() {
return transaction;
}
/**
* @see org.springmodules.jcr.SessionHolder#setSession(javax.jcr.Session)
*/
public void setSession(Session session) {
/*
* if (!(session instanceof XASession)) throw new
* IllegalArgumentException( "Session not of type XASession; actual type
* is " + session.getClass());
*/
// when using JCA we have another session type
if (session instanceof XASession) {
transaction = new JackRabbitUserTransaction(session);
}
super.setSession(session);
}
/**
* @see org.springframework.transaction.support.ResourceHolderSupport#clear()
*/
public void clear() {
super.clear();
transaction = null;
}
}