package com.idega.business; import javax.ejb.SessionBean; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import com.idega.core.accesscontrol.business.LoginSession; import com.idega.idegaweb.IWApplicationContext; import com.idega.idegaweb.IWMainApplication; import com.idega.idegaweb.IWUserContext; import com.idega.idegaweb.IWUserContextImpl; import com.idega.presentation.IWContext; import com.idega.user.data.User; import com.idega.util.expression.ELUtil; /** * Title: idega Business Objects * Description: A class to be a base implementation for IBO Session (Stateful EJB Session) beans * Copyright: Copyright (c) 2002 * Company: idega * @author <a href="tryggvi@idega.is">Tryggvi Larusson</a> */ public class IBOSessionBean extends IBOServiceBean implements IBOSession,SessionBean{ private static final long serialVersionUID = -3480014893942017616L; private IWUserContext iwuc; private String sessionKey="IBO."+this.getClass().getName(); public IBOSessionBean() {} public void ejbCreate(IWUserContext iwuc){ this.setUserContext(iwuc); } public void ejbPostCreate(IWUserContext iwuc){ } public void setUserContext(IWUserContext _iwuc) { IWUserContext iwucToSet = _iwuc; if(_iwuc instanceof IWContext){ IWContext iwc = (IWContext)_iwuc; HttpSession session = iwc.getSession(); ServletContext sc = iwc.getServletContext(); iwucToSet = new IWUserContextImpl(session,sc); } this.iwuc=iwucToSet; } public IWUserContext getUserContext() { return this.iwuc; } @Override public IWApplicationContext getIWApplicationContext() { return getUserContext() == null ? IWMainApplication.getDefaultIWApplicationContext() : getUserContext().getApplicationContext(); } @Override public void remove(){ this.ejbRemove(); } @Override public void ejbRemove() { this.getUserContext().removeSessionAttribute(this.sessionKey); this.iwuc = null; } @SuppressWarnings("unchecked") protected <T extends IBOSession> T getSessionInstance(Class<? extends IBOSession> beanClass) throws IBOLookupException { return (T) IBOLookup.getSessionInstance(getUserContext(), beanClass); } @Override protected User getCurrentUser(){ if (getUserContext() == null) { try { LoginSession loginSession = ELUtil.getInstance().getBean(LoginSession.class); return loginSession.getUser(); } catch (Exception e) { e.printStackTrace(); return null; } } return getUserContext().getCurrentUser(); } }