java类javax.servlet.http.HttpSessionBindingEvent的实例源码

HttpSessionNotifier.java 文件源码 项目:HttpSessionReplacer 阅读 44 收藏 0 点赞 0 评论 0
/**
 * Notifies listeners that attribute was added. See {@link SessionNotifier}
 * {@link #attributeAdded(RepositoryBackedSession, String, Object)}.
 * <p>
 * If the added attribute <code>value</code> is a HttpSessionBindingListener,
 * it will receive the {@link HttpSessionBindingEvent}. If there are
 * {@link HttpSessionAttributeListener} instances associated to
 * {@link ServletContext}, they will be notified via
 * {@link HttpSessionAttributeListener#attributeAdded(HttpSessionBindingEvent)}
 * .
 */
@Override
public void attributeAdded(RepositoryBackedSession session, String key, Object value) {
  // If the
  if (session instanceof HttpSession && value instanceof HttpSessionBindingListener) {
    ((HttpSessionBindingListener)value).valueBound(new HttpSessionBindingEvent((HttpSession)session, key));
  }
  HttpSessionBindingEvent event = new HttpSessionBindingEvent((HttpSession)session, key, value);
  for (HttpSessionAttributeListener listener : descriptor.getHttpSessionAttributeListeners()) {
    listener.attributeAdded(event);
  }
}
TestHttpSessionNotifier.java 文件源码 项目:HttpSessionReplacer 阅读 59 收藏 0 点赞 0 评论 0
@Test
public void testAttributeAdded() {
  HttpSessionAttributeListener listener = mock(HttpSessionAttributeListener.class);
  descriptor.addHttpSessionAttributeListener(listener);
  notifier.attributeAdded(session, "Test", "value");
  verify(listener).attributeAdded(any(HttpSessionBindingEvent.class));
  HttpSessionBindingListener bindingListener = mock(HttpSessionBindingListener.class);
  notifier.attributeAdded(session, "Test", bindingListener);
  verify(listener, times(2)).attributeAdded(any(HttpSessionBindingEvent.class));
  verify(bindingListener).valueBound(any(HttpSessionBindingEvent.class));
}
TestHttpSessionNotifier.java 文件源码 项目:HttpSessionReplacer 阅读 37 收藏 0 点赞 0 评论 0
@Test
public void testAttributeReplaced() {
  HttpSessionAttributeListener listener = mock(HttpSessionAttributeListener.class);
  notifier.attributeReplaced(session, "Test", "very-old-value");
  verify(listener, never()).attributeReplaced(any(HttpSessionBindingEvent.class));
  descriptor.addHttpSessionAttributeListener(listener);
  notifier.attributeReplaced(session, "Test", "old-value");
  verify(listener).attributeReplaced(any(HttpSessionBindingEvent.class));
  HttpSessionBindingListener bindingListener = mock(HttpSessionBindingListener.class);
  notifier.attributeReplaced(session, "Test", bindingListener);
  verify(listener, times(2)).attributeReplaced(any(HttpSessionBindingEvent.class));
  verify(bindingListener).valueUnbound(any(HttpSessionBindingEvent.class));
}
TestHttpSessionNotifier.java 文件源码 项目:HttpSessionReplacer 阅读 33 收藏 0 点赞 0 评论 0
@Test
public void testAttributeRemoved() {
  notifier.attributeRemoved(session, "Test", "very-old-value");
  HttpSessionAttributeListener listener = mock(HttpSessionAttributeListener.class);
  descriptor.addHttpSessionAttributeListener(listener);
  notifier.attributeRemoved(session, "Test", "old-value");
  verify(listener).attributeRemoved(any(HttpSessionBindingEvent.class));
  HttpSessionBindingListener bindingListener = mock(HttpSessionBindingListener.class);
  notifier.attributeRemoved(session, "Test", bindingListener);
  verify(listener, times(2)).attributeRemoved(any(HttpSessionBindingEvent.class));
  verify(bindingListener).valueUnbound(any(HttpSessionBindingEvent.class));
}
InstanciaManager.java 文件源码 项目:sistra 阅读 35 收藏 0 点赞 0 评论 0
public void valueUnbound(HttpSessionBindingEvent event) {
    Set keys = new HashSet(keySet());
    for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
        String idInstancia = (String) iterator.next();
        Object o = get(idInstancia);
        if (o != null && o instanceof InstanciaDelegate) {
            InstanciaDelegate delegate = (InstanciaDelegate) o;
            remove(idInstancia);
            delegate.destroy();
        }
    }
}
InstanciaManager.java 文件源码 项目:sistra 阅读 24 收藏 0 点赞 0 评论 0
public void valueUnbound(HttpSessionBindingEvent event) {
    Set keys = new HashSet(keySet());
    for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
        String idInstancia = (String) iterator.next();
        Object o = remove(idInstancia);
        if (o != null && o instanceof InstanciaDelegate) {
            InstanciaDelegate delegate = (InstanciaDelegate) o;
            delegate.destroy();
        }
    }
}
LoggedUser.java 文件源码 项目:spring-security-registration 阅读 25 收藏 0 点赞 0 评论 0
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
    List<String> users = activeUserStore.getUsers();
    LoggedUser user = (LoggedUser) event.getValue();
    if (users.contains(user.getUsername())) {
        users.remove(user.getUsername());
    }
}
NettyHttpSession.java 文件源码 项目:nebo 阅读 50 收藏 0 点赞 0 评论 0
@Override
public void setAttribute(String name, Object value) {
    assertIsValid();
    Assert.notNull(name, "Attribute name must not be null");
    if (value != null) {
        this.attributes.put(name, value);
        if (value instanceof HttpSessionBindingListener) {
            ((HttpSessionBindingListener) value).valueBound(new HttpSessionBindingEvent(this, name, value));
        }
    }
    else {
        removeAttribute(name);
    }
}
NettyHttpSession.java 文件源码 项目:nebo 阅读 38 收藏 0 点赞 0 评论 0
@Override
public void removeAttribute(String name) {
    assertIsValid();
    Assert.notNull(name, "Attribute name must not be null");
    Object value = this.attributes.remove(name);
    if (value instanceof HttpSessionBindingListener) {
        ((HttpSessionBindingListener) value).valueUnbound(new HttpSessionBindingEvent(this, name, value));
    }
}
NettyHttpSession.java 文件源码 项目:nebo 阅读 30 收藏 0 点赞 0 评论 0
/**
 * Clear all of this session's attributes.
 */
public void clearAttributes() {
    for (Iterator<Map.Entry<String, Object>> it = this.attributes.entrySet().iterator(); it.hasNext();) {
        Map.Entry<String, Object> entry = it.next();
        String name = entry.getKey();
        Object value = entry.getValue();
        it.remove();
        if (value instanceof HttpSessionBindingListener) {
            ((HttpSessionBindingListener) value).valueUnbound(new HttpSessionBindingEvent(this, name, value));
        }
    }
}


问题


面经


文章

微信
公众号

扫码关注公众号