package org.jboss.test.hibernate.ejb;
import org.jboss.test.hibernate.model.User;
import org.jboss.test.hibernate.ejb.interfaces.ProfileServiceHome;
import org.jboss.test.hibernate.ejb.interfaces.ProfileServiceUtil;
import org.jboss.test.hibernate.ejb.interfaces.ProfileService;
import javax.ejb.SessionBean;
import javax.ejb.EJBException;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
import javax.naming.NamingException;
import java.rmi.RemoteException;
import java.util.List;
public class AggregateProfileBean implements SessionBean
{
public User storeUser(User user) throws EJBException
{
ProfileService service = null;
try
{
service = locateService();
return service.storeUser( user );
}
catch( EJBException e )
{
throw e;
}
catch( RemoteException e )
{
throw new EJBException( "Unable to access profile service", e );
}
finally
{
release( service );
}
}
public User loadUser(long id) throws EJBException
{
ProfileService service = null;
try
{
service = locateService();
return service.loadUser(id);
}
catch( EJBException e )
{
throw e;
}
catch( RemoteException e )
{
throw new EJBException( "Unable to access profile service", e );
}
finally
{
release( service );
}
}
public User loadUser(Long id) throws EJBException
{
ProfileService service = null;
try
{
service = locateService();
return service.loadUser(id);
}
catch( EJBException e )
{
throw e;
}
catch( RemoteException e )
{
throw new EJBException( "Unable to access profile service", e );
}
finally
{
release( service );
}
}
public List listUsers() throws EJBException
{
ProfileService service = null;
try
{
service = locateService();
return service.listUsers();
}
catch( EJBException e )
{
throw e;
}
catch( RemoteException e )
{
throw new EJBException( "Unable to access profile service", e );
}
finally
{
release( service );
}
}
public void ejbCreate()
{
}
public void ejbActivate() throws EJBException, RemoteException
{
}
public void ejbPassivate() throws EJBException, RemoteException
{
}
public void ejbRemove() throws EJBException, RemoteException
{
}
public void setSessionContext(SessionContext ctx) throws EJBException, RemoteException
{
}
private ProfileService locateService() throws EJBException
{
try
{
ProfileServiceHome home = ProfileServiceUtil.getHome();
return home.create();
}
catch( NamingException e )
{
throw new EJBException( "Unable to locate profile service", e );
}
catch( CreateException e )
{
throw new EJBException( "Unable to create ref to profile service", e );
}
catch( RemoteException e )
{
throw new EJBException( "Unable to access profile service", e );
}
}
private void release(ProfileService service)
{
if ( service != null )
{
try
{
service.remove();
}
catch( Throwable ignore )
{
}
}
}
}