com.vaadin.server
Class VaadinServiceSession

java.lang.Object
  extended by com.vaadin.server.VaadinServiceSession
All Implemented Interfaces:
java.io.Serializable, java.util.EventListener, javax.servlet.http.HttpSessionBindingListener
Direct Known Subclasses:
VaadinPortletSession

public class VaadinServiceSession
extends java.lang.Object
implements javax.servlet.http.HttpSessionBindingListener, java.io.Serializable

Contains everything that Vaadin needs to store for a specific user. This is typically stored in a HttpSession or PortletSession, but others storage mechanisms might also be used.

Everything inside a VaadinServiceSession should be serializable to ensure compatibility with schemes using serialization for persisting the session data.

Since:
7.0.0
Author:
Vaadin Ltd
See Also:
Serialized Form

Nested Class Summary
 class VaadinServiceSession.ApplicationError
          Application error is an error message defined on the application level.
static class VaadinServiceSession.WindowAttachEvent
          Deprecated. might be refactored or removed before 7.0.0
static interface VaadinServiceSession.WindowAttachListener
          Window attach listener interface.
static class VaadinServiceSession.WindowDetachEvent
          Deprecated. might be refactored or removed before 7.0.0
static interface VaadinServiceSession.WindowDetachListener
          Window detach listener interface.
 
Field Summary
protected  WebBrowser browser
           
static java.lang.String UI_PARAMETER
          The name of the parameter that is by default used in e.g.
 
Constructor Summary
VaadinServiceSession(VaadinService service)
          Create a new service session tied to a Vaadin service
 
Method Summary
 void addBootstrapListener(BootstrapListener listener)
          Adds a listener that will be invoked when the bootstrap HTML is about to be generated.
 void addRequestHandler(RequestHandler handler)
          Adds a request handler to this session.
 void addUI(UI ui)
          Adds an initialized UI to this session.
 void addUIProvider(UIProvider uiProvider)
          Adds a UI provider to this session.
 void cleanupInactiveUIs()
          Deprecated. might be refactored or removed before 7.0.0
 void cleanupUI(UI ui)
          Deprecated. Method is declared as public only to support LegacyApplication.close() and will be removed when LegacyApplciation support is removed.
 void close()
          Closes this session and discards all associated UI state.
 java.lang.String createConnectorId(ClientConnector connector)
          Deprecated. might be refactored or removed before 7.0.0
<T> T
getAttribute(java.lang.Class<T> type)
          Gets a stored attribute value.
 java.lang.Object getAttribute(java.lang.String name)
          Gets a stored attribute value.
 WebBrowser getBrowser()
          Deprecated. might be refactored or removed before 7.0.0
 AbstractCommunicationManager getCommunicationManager()
          Deprecated. might be refactored or removed before 7.0.0
 DeploymentConfiguration getConfiguration()
          Gets the configuration for this session
 ConverterFactory getConverterFactory()
          Gets the ConverterFactory used to locate a suitable Converter for fields in the session.
static VaadinServiceSession getCurrent()
          Gets the currently used session.
 Terminal.ErrorListener getErrorHandler()
          Gets the session's error handler.
static VaadinServiceSession getForSession(VaadinService service, WrappedSession underlyingSession)
          Deprecated. might be refactored or removed before 7.0.0
 GlobalResourceHandler getGlobalResourceHandler(boolean createOnDemand)
          Gets this session's global resource handler that takes care of serving connector resources that are not served by any single connector because e.g.
protected  int getHeartbeatTimeout()
          Returns the number of seconds that must pass without a valid heartbeat or UIDL request being received from a UI before that UI is removed from the application.
 long getLastRequestTime()
           
 java.util.Locale getLocale()
          Gets the default locale for this session.
 java.util.concurrent.locks.Lock getLock()
          Gets the lock that should be used to synchronize usage of data inside this session.
 int getNextUIid()
          Creates a new unique id for a UI.
 java.util.Map<java.lang.String,java.lang.Integer> getPreserveOnRefreshUIs()
          Gets the mapping from window.name to UI id for UIs that are should be retained on refresh.
 java.util.Collection<RequestHandler> getRequestHandlers()
          Gets the request handlers that are registered to the session.
 VaadinService getService()
           
 WrappedSession getSession()
          Gets the underlying session to which this service session is currently associated.
 long getTotalSessionTime()
           
 UI getUIById(int uiId)
          Returns a UI with the given id.
protected  int getUidlRequestTimeout()
          Returns the number of seconds that must pass without a valid UIDL request being received from a UI before the UI is removed from the session, even though heartbeat requests are received.
 java.util.List<UIProvider> getUIProviders()
          Gets the UI providers configured for this session.
 java.util.Collection<UI> getUIs()
          Gets all the UIs of this session.
protected  boolean isUIAlive(UI ui)
          Deprecated. Might be refactored or removed before 7.0.0
 void modifyBootstrapResponse(BootstrapResponse response)
          Deprecated. might be refactored or removed before 7.0.0
 void removeBootstrapListener(BootstrapListener listener)
          Remove a bootstrap listener that was previously added.
 void removeFromSession(VaadinService service)
          Deprecated. might be refactored or removed before 7.0.0
 void removeRequestHandler(RequestHandler handler)
          Removes a request handler from the session.
 void removeUIProvider(UIProvider uiProvider)
          Removes a UI provider association from this session.
<T> void
setAttribute(java.lang.Class<T> type, T value)
          Stores a value in this service session.
 void setAttribute(java.lang.String name, java.lang.Object value)
          Stores a value in this service session.
 void setCommunicationManager(AbstractCommunicationManager communicationManager)
           
 void setConfiguration(DeploymentConfiguration configuration)
           
 void setConverterFactory(ConverterFactory converterFactory)
          Sets the ConverterFactory used to locate a suitable Converter for fields in the session.
static void setCurrent(VaadinServiceSession session)
          Sets the thread local for the current session.
 void setErrorHandler(Terminal.ErrorListener errorHandler)
          Sets the session error handler.
 void setLastRequestTime(long time)
          Sets the time spent servicing the last request in the session and updates the total time spent servicing requests in this session.
 void setLocale(java.util.Locale locale)
          Sets the default locale for this session.
 void storeInSession(VaadinService service, WrappedSession session)
          Deprecated. might be refactored or removed before 7.0.0
 void valueBound(javax.servlet.http.HttpSessionBindingEvent arg0)
           
 void valueUnbound(javax.servlet.http.HttpSessionBindingEvent event)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UI_PARAMETER

public static final java.lang.String UI_PARAMETER
The name of the parameter that is by default used in e.g. web.xml to define the name of the default UI class.

See Also:
Constant Field Values

browser

protected WebBrowser browser
Constructor Detail

VaadinServiceSession

public VaadinServiceSession(VaadinService service)
Create a new service session tied to a Vaadin service

Parameters:
service - the Vaadin service for the new session
Method Detail

valueBound

public void valueBound(javax.servlet.http.HttpSessionBindingEvent arg0)
Specified by:
valueBound in interface javax.servlet.http.HttpSessionBindingListener
See Also:
HttpSessionBindingListener.valueBound(HttpSessionBindingEvent)

valueUnbound

public void valueUnbound(javax.servlet.http.HttpSessionBindingEvent event)
Specified by:
valueUnbound in interface javax.servlet.http.HttpSessionBindingListener
See Also:
HttpSessionBindingListener.valueUnbound(HttpSessionBindingEvent)

getBrowser

@Deprecated
public WebBrowser getBrowser()
Deprecated. might be refactored or removed before 7.0.0

Get the web browser associated with this session.

Returns:

getTotalSessionTime

public long getTotalSessionTime()
Returns:
The total time spent servicing requests in this session.

setLastRequestTime

public void setLastRequestTime(long time)
Sets the time spent servicing the last request in the session and updates the total time spent servicing requests in this session.

Parameters:
time - the time spent in the last request.

getLastRequestTime

public long getLastRequestTime()
Returns:
the time spent servicing the last request in this session.

getSession

public WrappedSession getSession()
Gets the underlying session to which this service session is currently associated.

Returns:
the wrapped session for this context

getCommunicationManager

@Deprecated
public AbstractCommunicationManager getCommunicationManager()
Deprecated. might be refactored or removed before 7.0.0

Returns:

getForSession

@Deprecated
public static VaadinServiceSession getForSession(VaadinService service,
                                                            WrappedSession underlyingSession)
Deprecated. might be refactored or removed before 7.0.0

Parameters:
service - TODO
underlyingSession -
Returns:

removeFromSession

@Deprecated
public void removeFromSession(VaadinService service)
Deprecated. might be refactored or removed before 7.0.0

Parameters:
service - TODO

storeInSession

@Deprecated
public void storeInSession(VaadinService service,
                                      WrappedSession session)
Deprecated. might be refactored or removed before 7.0.0

Parameters:
session -

setCommunicationManager

public void setCommunicationManager(AbstractCommunicationManager communicationManager)

setConfiguration

public void setConfiguration(DeploymentConfiguration configuration)

getConfiguration

public DeploymentConfiguration getConfiguration()
Gets the configuration for this session

Returns:
the deployment configuration

getLocale

public java.util.Locale getLocale()
Gets the default locale for this session. By default this is the preferred locale of the user using the session. In most cases it is read from the browser defaults.

Returns:
the locale of this session.

setLocale

public void setLocale(java.util.Locale locale)
Sets the default locale for this session. By default this is the preferred locale of the user using the application. In most cases it is read from the browser defaults.

Parameters:
locale - the Locale object.

getErrorHandler

public Terminal.ErrorListener getErrorHandler()
Gets the session's error handler.

Returns:
the current error handler

setErrorHandler

public void setErrorHandler(Terminal.ErrorListener errorHandler)
Sets the session error handler.

Parameters:
errorHandler -

getConverterFactory

public ConverterFactory getConverterFactory()
Gets the ConverterFactory used to locate a suitable Converter for fields in the session. See setConverterFactory(ConverterFactory) for more details

Returns:
The converter factory used in the session

setConverterFactory

public void setConverterFactory(ConverterFactory converterFactory)
Sets the ConverterFactory used to locate a suitable Converter for fields in the session.

The ConverterFactory is used to find a suitable converter when binding data to a UI component and the data type does not match the UI component type, e.g. binding a Double to a TextField (which is based on a String).

The Converter for an individual field can be overridden using AbstractField.setConverter(Converter) and for individual property ids in a Table using Table.setConverter(Object, Converter).

The converter factory must never be set to null.

Parameters:
converterFactory - The converter factory used in the session

addRequestHandler

public void addRequestHandler(RequestHandler handler)
Adds a request handler to this session. Request handlers can be added to provide responses to requests that are not handled by the default functionality of the framework.

Handlers are called in reverse order of addition, so the most recently added handler will be called first.

Parameters:
handler - the request handler to add
Since:
7.0
See Also:
removeRequestHandler(RequestHandler)

removeRequestHandler

public void removeRequestHandler(RequestHandler handler)
Removes a request handler from the session.

Parameters:
handler - the request handler to remove
Since:
7.0

getRequestHandlers

public java.util.Collection<RequestHandler> getRequestHandlers()
Gets the request handlers that are registered to the session. The iteration order of the returned collection is the same as the order in which the request handlers will be invoked when a request is handled.

Returns:
a collection of request handlers, with the iteration order according to the order they would be invoked
Since:
7.0
See Also:
addRequestHandler(RequestHandler), removeRequestHandler(RequestHandler)

getCurrent

public static VaadinServiceSession getCurrent()
Gets the currently used session. The current session is automatically defined when processing requests to the server and in threads started at a point when the current session is defined (see InheritableThreadLocal). In other cases, (e.g. from background threads started in some other way), the current session is not automatically defined.

Returns:
the current session instance if available, otherwise null
Since:
7.0
See Also:
setCurrent(VaadinServiceSession)

setCurrent

public static void setCurrent(VaadinServiceSession session)
Sets the thread local for the current session. This method is used by the framework to set the current session whenever a new request is processed and it is cleared when the request has been processed.

The application developer can also use this method to define the current session outside the normal request handling and treads started from request handling threads, e.g. when initiating custom background threads.

Parameters:
session -
Since:
7.0
See Also:
getCurrent(), ThreadLocal

getUIs

public java.util.Collection<UI> getUIs()
Gets all the UIs of this session. This includes UIs that have been requested but not yet initialized. UIs that receive no heartbeat requests from the client are eventually removed from the session.

Returns:
a collection of UIs belonging to this application
Since:
7.0

createConnectorId

@Deprecated
public java.lang.String createConnectorId(ClientConnector connector)
Deprecated. might be refactored or removed before 7.0.0

Generate an id for the given Connector. Connectors must not call this method more than once, the first time they need an id.

Parameters:
connector - A connector that has not yet been assigned an id.
Returns:
A new id for the connector

getUIById

public UI getUIById(int uiId)
Returns a UI with the given id.

This is meant for framework internal use.

Parameters:
uiId - The UI id
Returns:
The UI with the given id or null if not found

addBootstrapListener

public void addBootstrapListener(BootstrapListener listener)
Adds a listener that will be invoked when the bootstrap HTML is about to be generated. This can be used to modify the contents of the HTML that loads the Vaadin application in the browser and the HTTP headers that are included in the response serving the HTML.

Parameters:
listener - the bootstrap listener to add
See Also:
BootstrapListener.modifyBootstrapFragment(BootstrapFragmentResponse), BootstrapListener.modifyBootstrapPage(BootstrapPageResponse)

removeBootstrapListener

public void removeBootstrapListener(BootstrapListener listener)
Remove a bootstrap listener that was previously added.

Parameters:
listener - the bootstrap listener to remove
See Also:
addBootstrapListener(BootstrapListener)

modifyBootstrapResponse

@Deprecated
public void modifyBootstrapResponse(BootstrapResponse response)
Deprecated. might be refactored or removed before 7.0.0

Fires a bootstrap event to all registered listeners. There are currently two supported events, both inheriting from BootstrapResponse: BootstrapFragmentResponse and BootstrapPageResponse.

Parameters:
response - the bootstrap response event for which listeners should be fired

cleanupInactiveUIs

@Deprecated
public void cleanupInactiveUIs()
Deprecated. might be refactored or removed before 7.0.0

Removes all those UIs from the session for which isUIAlive(com.vaadin.ui.UI) returns false. Cleanup events are fired for the removed UIs.

Called by the framework at the end of every request.

Since:
7.0.0
See Also:
UI.CleanupEvent, UI.CleanupListener, isUIAlive(UI)

cleanupUI

@Deprecated
public void cleanupUI(UI ui)
Deprecated. Method is declared as public only to support LegacyApplication.close() and will be removed when LegacyApplciation support is removed.

Called by the framework to remove an UI instance because it has been inactive.

Parameters:
ui - the UI to remove

getHeartbeatTimeout

protected int getHeartbeatTimeout()
Returns the number of seconds that must pass without a valid heartbeat or UIDL request being received from a UI before that UI is removed from the application. This is a lower bound; it might take longer to close an inactive UI. Returns a negative number if heartbeat is disabled and timeout never occurs.

Returns:
The heartbeat timeout in seconds or a negative number if timeout never occurs.
Since:
7.0.0
See Also:
getUidlRequestTimeout(), cleanupInactiveUIs(), DeploymentConfiguration.getHeartbeatInterval()

getUidlRequestTimeout

protected int getUidlRequestTimeout()
Returns the number of seconds that must pass without a valid UIDL request being received from a UI before the UI is removed from the session, even though heartbeat requests are received. This is a lower bound; it might take longer to close an inactive UI. Returns a negative number if

This timeout only has effect if cleanup of inactive UIs is enabled; otherwise heartbeat requests are enough to extend UI lifetime indefinitely.

Returns:
The UIDL request timeout in seconds, or a negative number if timeout never occurs.
Since:
7.0.0
See Also:
DeploymentConfiguration.isIdleUICleanupEnabled(), getHeartbeatTimeout(), cleanupInactiveUIs()

isUIAlive

@Deprecated
protected boolean isUIAlive(UI ui)
Deprecated. Might be refactored or removed before 7.0.0

Returns whether the given UI is alive (the client-side actively communicates with the server) or whether it can be removed from the session and eventually collected.

Parameters:
ui - The UI whose status to check
Returns:
true if the UI is alive, false if it could be removed.
Since:
7.0.0

getGlobalResourceHandler

public GlobalResourceHandler getGlobalResourceHandler(boolean createOnDemand)
Gets this session's global resource handler that takes care of serving connector resources that are not served by any single connector because e.g. because they are served with strong caching or because of legacy reasons.

Parameters:
createOnDemand - true if a resource handler should be initialized if there is no handler associated with this application. false if null should be returned if there is no registered handler.
Returns:
this session's global resource handler, or null if there is no handler and the createOnDemand parameter is false.
Since:
7.0.0

getLock

public java.util.concurrent.locks.Lock getLock()
Gets the lock that should be used to synchronize usage of data inside this session.

Returns:
the lock that should be used for synchronization

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object value)
Stores a value in this service session. This can be used to associate data with the current user so that it can be retrieved at a later point from some other part of the application. Setting the value to null clears the stored value.

Parameters:
name - the name to associate the value with, can not be null
value - the value to associate with the name, or null to remove a previous association.
See Also:
getAttribute(String)

setAttribute

public <T> void setAttribute(java.lang.Class<T> type,
                             T value)
Stores a value in this service session. This can be used to associate data with the current user so that it can be retrieved at a later point from some other part of the application. Setting the value to null clears the stored value.

The fully qualified name of the type is used as the name when storing the value. The outcome of calling this method is thus the same as if calling

setAttribute(type.getName(), value);

Parameters:
type - the type that the stored value represents, can not be null
value - the value to associate with the type, or null to remove a previous association.
See Also:
getAttribute(Class), setAttribute(String, Object)

getAttribute

public java.lang.Object getAttribute(java.lang.String name)
Gets a stored attribute value. If a value has been stored for the session, that value is returned. If no value is stored for the name, null is returned.

Parameters:
name - the name of the value to get, can not be null.
Returns:
the value, or null if no value has been stored or if it has been set to null.
See Also:
setAttribute(String, Object)

getAttribute

public <T> T getAttribute(java.lang.Class<T> type)
Gets a stored attribute value. If a value has been stored for the session, that value is returned. If no value is stored for the name, null is returned.

The fully qualified name of the type is used as the name when getting the value. The outcome of calling this method is thus the same as if calling

getAttribute(type.getName());

Parameters:
type - the type of the value to get, can not be null.
Returns:
the value, or null if no value has been stored or if it has been set to null.
See Also:
setAttribute(Class, Object), getAttribute(String)

getNextUIid

public int getNextUIid()
Creates a new unique id for a UI.

Returns:
a unique UI id

getPreserveOnRefreshUIs

public java.util.Map<java.lang.String,java.lang.Integer> getPreserveOnRefreshUIs()
Gets the mapping from window.name to UI id for UIs that are should be retained on refresh.

Returns:
the mapping between window names and UI ids for this session.
See Also:
VaadinService#preserveUIOnRefresh(VaadinRequest, UI, UIProvider), PreserveOnRefresh

addUI

public void addUI(UI ui)
Adds an initialized UI to this session.

Parameters:
ui - the initialized UI to add.

addUIProvider

public void addUIProvider(UIProvider uiProvider)
Adds a UI provider to this session.

Parameters:
uiProvider - the UI provider that should be added

removeUIProvider

public void removeUIProvider(UIProvider uiProvider)
Removes a UI provider association from this session.

Parameters:
uiProvider - the UI provider that should be removed

getUIProviders

public java.util.List<UIProvider> getUIProviders()
Gets the UI providers configured for this session.

Returns:
an unmodifiable list of UI providers

getService

public VaadinService getService()

close

public void close()
Closes this session and discards all associated UI state. After the session has been discarded, any UIs that have been left open will give an Out of sync error (SystemMessages.getOutOfSyncCaption()) error and a new session will be created for serving new UIs.

To avoid causing out of sync errors, you should typically redirect to some other page using Page.setLocation(String) to make the browser unload the invalidated UI.

This method is just a shorthand to VaadinService.closeSession(VaadinServiceSession)

See Also:
VaadinService.closeSession(VaadinServiceSession)


Copyright © 2000-2011 Vaadin Ltd. All Rights Reserved.