/hostadmiral/trunk/webapp/WEB-INF/web.xml |
---|
49,7 → 49,7 |
</filter-mapping> |
<listener> |
<listener-class>ak.hostadmiral.core.action.UserUpdater</listener-class> |
<listener-class>ak.hostadmiral.servlet.sessioncontrol.SessionObserver</listener-class> |
</listener> |
<servlet> |
/hostadmiral/trunk/webapp/WEB-INF/conf/hostadmiral_config.xml.default |
---|
48,10 → 48,6 |
and can use static initializers. |
--> |
<initializations> |
<!-- Utils --> |
<initialization> |
<class>ak.hostadmiral.util.ResourceManager</class> |
</initialization> |
<!-- Core classes --> |
<initialization> |
<class>ak.hostadmiral.core.model.UserManager</class> |
107,5 → 103,9 |
<param-value>ak.hostadmiral.core.model.store.hibernate.MailAliasDestinationHibernate</param-value> |
</init-param> |
</initialization> |
<!-- Web classes --> |
<initialization> |
<class>ak.hostadmiral.core.action.UserUpdater</class> |
</initialization> |
</initializations> |
</hostadmiral> |
/hostadmiral/trunk/src/ak/hostadmiral/servlet/sessioncontrol/SessionBug.java |
---|
0,0 → 1,19 |
package ak.hostadmiral.servlet.sessioncontrol; |
import java.io.Serializable; |
import javax.servlet.http.HttpSessionActivationListener; |
import javax.servlet.http.HttpSessionEvent; |
public final class SessionBug |
implements HttpSessionActivationListener, Serializable |
{ |
public void sessionDidActivate(HttpSessionEvent se) |
{ |
SessionControl.getInstance().addSession(se.getSession()); |
} |
public void sessionWillPassivate(HttpSessionEvent se) |
{ |
SessionControl.getInstance().removeSession(se.getSession()); |
} |
} |
/hostadmiral/trunk/src/ak/hostadmiral/servlet/sessioncontrol/SessionControl.java |
---|
0,0 → 1,41 |
package ak.hostadmiral.servlet.sessioncontrol; |
import java.util.Collections; |
import java.util.Collection; |
import java.util.HashSet; |
import javax.servlet.http.HttpSession; |
import org.apache.log4j.Logger; |
public final class SessionControl |
{ |
private static final Logger logger = Logger.getLogger(SessionControl.class); |
protected Collection sessions = new HashSet(); // Collection(HttpSession) |
public void addSession(HttpSession s) |
{ |
logger.info("session added " + s.getId()); |
sessions.add(s); |
s.setAttribute(SessionBug.class.getName(), new SessionBug()); |
} |
public void removeSession(HttpSession s) |
{ |
logger.info("session removed " + s.getId()); |
sessions.remove(s); |
} |
public Collection getSessions() |
{ |
return Collections.unmodifiableCollection(sessions); |
} |
private static SessionControl sessionControl = new SessionControl(); |
public static SessionControl getInstance() |
{ |
return sessionControl; |
} |
} |
/hostadmiral/trunk/src/ak/hostadmiral/servlet/sessioncontrol/SessionObserver.java |
---|
0,0 → 1,18 |
package ak.hostadmiral.servlet.sessioncontrol; |
import javax.servlet.http.HttpSessionListener; |
import javax.servlet.http.HttpSessionEvent; |
public final class SessionObserver |
implements HttpSessionListener |
{ |
public void sessionCreated(HttpSessionEvent se) |
{ |
SessionControl.getInstance().addSession(se.getSession()); |
} |
public void sessionDestroyed(HttpSessionEvent se) |
{ |
SessionControl.getInstance().removeSession(se.getSession()); |
} |
} |
/hostadmiral/trunk/src/ak/hostadmiral/core/action/UserUpdater.java |
---|
1,21 → 1,15 |
package ak.hostadmiral.core.action.sessioncontrol; |
package ak.hostadmiral.core.action; |
import java.util.Map; |
import java.util.Set; |
import java.util.HashSet; |
import java.util.Iterator; |
import javax.servlet.http.HttpSessionListener; |
import javax.servlet.http.HttpSessionActivationListener; |
import javax.servlet.http.HttpSessionEvent; |
import javax.servlet.http.HttpSession; |
import org.apache.log4j.Logger; |
import org.apache.struts.Globals; |
import ak.hostadmiral.util.ModelException; |
import ak.hostadmiral.util.ConfigInit; |
import ak.hostadmiral.servlet.sessioncontrol.SessionControl; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.UserManager; |
import ak.hostadmiral.core.model.UserModifiedListener; |
24,15 → 18,10 |
public final class UserUpdater |
implements |
ConfigInit, |
UserModifiedListener, |
HttpSessionListener, |
HttpSessionActivationListener |
UserModifiedListener |
{ |
private static final Logger logger = Logger.getLogger(UserUpdater.class); |
protected Set sessions = new HashSet(); |
protected boolean registered = false; |
public UserUpdater() |
{ |
} |
39,56 → 28,16 |
public void init(Map params) |
{ |
register(); |
} |
protected void register() |
{ |
UserManager.getInstance().addModifiedListener(this); |
registered = true; |
logger.info("registered for user modifications"); |
} |
public void sessionCreated(HttpSessionEvent se) |
{ |
logger.info("session created"); |
sessions.add(se.getSession()); |
} |
public void sessionDestroyed(HttpSessionEvent se) |
{ |
if(logger.isInfoEnabled()) { |
logger.info("session destroyed for " + se.getSession().getAttribute(SessionKeys.USER)); |
} |
sessions.remove(se.getSession()); |
} |
public void sessionDidActivate(HttpSessionEvent se) |
{ |
if(logger.isInfoEnabled()) { |
logger.info("session activated for " + se.getSession().getAttribute(SessionKeys.USER)); |
} |
sessions.add(se.getSession()); |
} |
public void sessionWillPassivate(HttpSessionEvent se) |
{ |
if(logger.isInfoEnabled()) { |
logger.info("session passivated for " + se.getSession().getAttribute(SessionKeys.USER)); |
} |
sessions.remove(se.getSession()); |
} |
public void userModified(User editor, User user, User oldUser) |
throws ModelException |
{ |
logger.info("user modified: " + user); |
for(Iterator i = sessions.iterator(); i.hasNext(); ) { |
for(Iterator i = SessionControl.getInstance().getSessions().iterator(); i.hasNext(); ) { |
HttpSession s = (HttpSession)i.next(); |
User u = (User)s.getAttribute(SessionKeys.USER); |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/User.java |
---|
264,6 → 264,11 |
return locale; |
} |
public void setLocale(Locale locale) |
{ |
this.locale = locale; |
} |
public void setLocale(User editor, Locale locale) |
throws ModelException |
{ |