/**
*
*/
package com.googlecode.tawus.hibernate.internal.advices;
import org.apache.tapestry5.ioc.Invocation;
import org.apache.tapestry5.ioc.MethodAdvice;
import org.hibernate.Session;
import com.googlecode.tawus.hibernate.services.HibernateSessionManager;
public class NotSupportedTransactionAdvice implements
MethodAdvice {
private HibernateSessionManager sessionManager;
private String factoryID;
public NotSupportedTransactionAdvice(String factoryID,
HibernateSessionManager sessionManager) {
this.sessionManager = sessionManager;
this.factoryID = factoryID;
}
@Override
public void advise(Invocation invocation) {
if(sessionManager.isWithinTransaction()){
Session oldSession = sessionManager.getSession(factoryID);
Session newSession = sessionManager.createSession(factoryID);
invocation.proceed();
newSession.close();
sessionManager.setSession(factoryID, oldSession);
}else{
invocation.proceed();
}
}
}