Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1070 → Rev 1071

/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
{