public void valueUnbound(HttpSessionBindingEvent event) { try { Engine.logContext.debug("HTTP session stopping..."); HttpSession httpSession = event.getSession(); String httpSessionID = httpSession.getId(); if (Engine.theApp != null) Engine.theApp.contextManager.removeAll(httpSessionID); removeSession(httpSessionID); Engine.logContext.debug("HTTP session stopped [" + httpSessionID + "]"); } catch(Exception e) { Engine.logContext.error("Exception during unbinding HTTP session listener", e); } }
@Override public void attributeUpdated(final Session session, final String name, final Object value, final Object old) { if(name.startsWith(IO_UNDERTOW)) { return; } final HttpSessionImpl httpSession = SecurityActions.forSession(session, servletContext, false); if (old != value) { if (old instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) old).valueUnbound(new HttpSessionBindingEvent(httpSession, name, old)); } applicationListeners.httpSessionAttributeReplaced(httpSession, name, old); } if (value instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) value).valueBound(new HttpSessionBindingEvent(httpSession, name, value)); } }
/** * When this object is unbound from the session (including upon session * expiry) the files that have been added to the ArrayList are iterated * and deleted. * * @param event the session unbind event. */ public void valueUnbound(HttpSessionBindingEvent event) { Iterator iter = this.chartNames.listIterator(); while (iter.hasNext()) { String filename = (String) iter.next(); File file = new File( System.getProperty("java.io.tmpdir"), filename ); if (file.exists()) { file.delete(); } } return; }
/** * Removes the object bound with the specified name from * this session. */ public void removeAttribute(String name) { maybeThrowIllegalStateException(); checkValid(); Object value = getAttribute(name); // notify binding listeners if (value != null) { sessionData_.remove(name); updateCache(); if (value instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) value).valueUnbound( new HttpSessionBindingEvent(this, name)); } } // notify attribute listeners ServletSessionCache.getCache(cacheId_). notifySessionAttributeRemoved(this, name); }
/** * Serialize the attributes of this session into an object that can be * turned into a byte array with standard Java serialization. * * @return a representation of this session's serialized state */ public Serializable serializeState() { HashMap<String, Serializable> state = new HashMap<String, Serializable>(); 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 Serializable) { state.put(name, (Serializable) value); } else { // Not serializable... Servlet containers usually automatically // unbind the attribute in this case. if (value instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) value).valueUnbound(new HttpSessionBindingEvent(this, name, value)); } } } return state; }
@Test public void shouldUnbindOnInvalidate() throws Exception { Map<String, Object> sampleData = new HashMap<>(); HttpSessionBindingListener mockA = mock(HttpSessionBindingListener.class); HttpSessionBindingListener mockC = mock(HttpSessionBindingListener.class); sampleData.put("a", mockA); sampleData.put("b", "b"); sampleData.put("c", mockC); sampleData.put("b", "b"); when(session.data()).thenReturn(sampleData); vertxWrappedSession.invalidate(); verify(session).destroy(); ArgumentCaptor<HttpSessionBindingEvent> sessionBindingEventCaptor = ArgumentCaptor.forClass(HttpSessionBindingEvent.class); verify(mockA).valueUnbound(sessionBindingEventCaptor.capture()); verify(mockC).valueUnbound(sessionBindingEventCaptor.capture()); assertThat(sessionBindingEventCaptor.getAllValues()).hasSize(2); assertHttpSessionBindingEvent("a", mockA, sessionBindingEventCaptor.getAllValues().get(0)); assertHttpSessionBindingEvent("c", mockC, sessionBindingEventCaptor.getAllValues().get(1)); }
@Override public void valueUnbound(HttpSessionBindingEvent event) { String clientIp = sessionIdClientIp.remove(event.getSession().getId()); if (clientIp != null) { clientIpSessionId.remove(clientIp); } }
@Override public void removeAttribute(String name) { if (attributes != null) { Object value = attributes.get(name); if (value != null && value instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) value).valueUnbound(new HttpSessionBindingEvent(this, name, value)); } attributes.remove(name); } }
@Override public void setAttribute(String name, Object value) { attributes.put(name, value); if (value != null && value instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) value).valueBound(new HttpSessionBindingEvent(this, name, value)); } }
@Override public void attributeAdded(final Session session, final String name, final Object value) { if(name.startsWith(IO_UNDERTOW)) { return; } final HttpSessionImpl httpSession = SecurityActions.forSession(session, servletContext, false); applicationListeners.httpSessionAttributeAdded(httpSession, name, value); if (value instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) value).valueBound(new HttpSessionBindingEvent(httpSession, name, value)); } }
@Override public void attributeRemoved(final Session session, final String name, final Object old) { if(name.startsWith(IO_UNDERTOW)) { return; } final HttpSessionImpl httpSession = SecurityActions.forSession(session, servletContext, false); if (old != null) { applicationListeners.httpSessionAttributeRemoved(httpSession, name, old); if (old instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) old).valueUnbound(new HttpSessionBindingEvent(httpSession, name, old)); } } }
@Override public void valueUnbound(HttpSessionBindingEvent event) { // WICKET-5164 use the original sessionId IPageStore store = getPageStore(); // store might be null if destroyed already if (store != null) { store.unbind(sessionId); } }
public void valueUnbound(HttpSessionBindingEvent event) { if(event.getName().equals("AppSession")) { Log.logNormal("Removing session"); OnlineSession session = (OnlineSession)event.getValue(); m_ResourceManager.removeSession(session); } else { Log.logImportant("Removing unknown object from session: "+event.getName()); } }
/** * When this object is unbound from the session (including upon session * expiry) the files that have been added to the ArrayList are iterated * and deleted. * * @param event the session unbind event. */ public void valueUnbound(HttpSessionBindingEvent event) { Iterator iter = this.chartNames.listIterator(); while (iter.hasNext()) { String filename = (String) iter.next(); File file = new File(System.getProperty("java.io.tmpdir"), filename); if (file.exists()) { file.delete(); } } return; }
/** * Record the fact that a servlet context attribute was added. * * @param event * The session attribute event */ @Override public void attributeAdded(HttpSessionBindingEvent event) { log("attributeAdded('" + event.getSession().getId() + "', '" + event.getName() + "', '" + event.getValue() + "')"); }
/** * Record the fact that a servlet context attribute was removed. * * @param event * The session attribute event */ @Override public void attributeRemoved(HttpSessionBindingEvent event) { log("attributeRemoved('" + event.getSession().getId() + "', '" + event.getName() + "', '" + event.getValue() + "')"); }
/** * Record the fact that a servlet context attribute was replaced. * * @param event * The session attribute event */ @Override public void attributeReplaced(HttpSessionBindingEvent event) { log("attributeReplaced('" + event.getSession().getId() + "', '" + event.getName() + "', '" + event.getValue() + "')"); }
/** This is invoked, whenever an instance of this class is added to the HttpSession object. * Currently, this method will set the session timeout value * @param httpSessionBindingEvent the event that identifies the session. */ public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) { if (log.isDebugEnabled()) log.debug("valueBound event"); if(ContextManagerFactory.instance().getProperty(UserSession.RULE_TIMEOUT) != null ) { if (log.isDebugEnabled()) log.debug("Setting Timeout to "+(String) ContextManagerFactory.instance().getProperty(UserSession.RULE_TIMEOUT)); httpSessionBindingEvent.getSession().setMaxInactiveInterval(Integer.parseInt((String) ContextManagerFactory.instance().getProperty(UserSession.RULE_TIMEOUT))); } }
/** This is invoked, whenever an instance of this class is removed from the HttpSession object. * This can happen by an explicit session.removeAttribute(), or if the HttpSession is invalidated or if the HttpSession times out. * It will kill all related components. * It will de-register from the Session Manager. * It will null out all internal references. * @param httpSessionBindingEvent the event that identifies the session. */ public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) { if (log.isDebugEnabled()) log.debug("The valueUnbound method has been invoked. This will kill the UserSession."); // kill this usersession killUserSession(); }
public void setAttribute(String string, Object object) { Object originalValue = attr.put(string, object); if (originalValue != null && originalValue instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) originalValue).valueUnbound(new HttpSessionBindingEvent(this, string)); } if (object != null && object instanceof HttpSessionBindingListener) { ((HttpSessionBindingListener) object).valueBound(new HttpSessionBindingEvent(this, string)); } }
@Override public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) { ServletContext servletContext = httpSessionBindingEvent.getSession().getServletContext(); Object loginCount = httpSessionBindingEvent.getSession().getAttribute("loginCount"); if (loginCount == null || "0".equals(loginCount)) { servletContext.setAttribute("loginCount", 1); } else { servletContext.setAttribute("loginCount", Integer.parseInt(loginCount.toString()) + 1); } }
@Override public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) { ServletContext servletContext = httpSessionBindingEvent.getSession().getServletContext(); Object loginCount = httpSessionBindingEvent.getSession().getAttribute("loginCount"); if (loginCount == null || "0".equals(loginCount)) { servletContext.setAttribute("loginCount", 0); } else { servletContext.setAttribute("loginCount", Integer.parseInt(loginCount.toString()) - 1); } }
public void valueUnbound(HttpSessionBindingEvent arg0) { if (scriptSessionManager != null && httpSessionId != null) { scriptSessionManager.disassociateAllScriptSessionsFromHttpSession(httpSessionId); } }
/** * When this object is unbound from the session (including upon session * expiry) the files that have been added to the ArrayList are iterated * and deleted. * * @param event the session unbind event. */ @Override public void valueUnbound(HttpSessionBindingEvent event) { Iterator iter = this.chartNames.listIterator(); while (iter.hasNext()) { String filename = (String) iter.next(); File file = new File( System.getProperty("java.io.tmpdir"), filename ); if (file.exists()) { file.delete(); } } }
/** * 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); } }
@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)); }
@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)); }
@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)); }
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(); } } }
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(); } } }
@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()); } }
@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); } }
@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)); } }
/** * 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)); } } }