com.vaadin.util
Class CurrentInstance

java.lang.Object
  extended by com.vaadin.util.CurrentInstance
All Implemented Interfaces:
java.io.Serializable

public class CurrentInstance
extends java.lang.Object
implements java.io.Serializable

Keeps track of various current instances for the current thread. All the instances are automatically cleared after handling a request from the client to avoid leaking memory. The inheritable values are also maintained when execution is moved to another thread, both when a new thread is created and when VaadinSession.access(Runnable) or UI.access(Runnable) is used.

Please note that the instances are stored using WeakReference. This means that the a current instance value may suddenly disappear if there a no other references to the object.

Currently the framework uses the following instances:

Inheritable: UI, VaadinService, VaadinSession.

Non-inheritable: VaadinRequest, VaadinResponse.

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

Method Summary
static void clearAll()
          Clears all current instances.
static
<T> T
get(java.lang.Class<T> type)
          Gets the current instance of a specific type if available.
static java.util.Map<java.lang.Class<?>,CurrentInstance> getInstances(boolean onlyInheritable)
          Gets the currently set instances so that they can later be restored using restoreInstances(Map).
static void restoreInstances(java.util.Map<java.lang.Class<?>,CurrentInstance> old)
          Restores the given instances to the given values.
static
<T> void
set(java.lang.Class<T> type, T instance)
          Sets the current instance of the given type.
static java.util.Map<java.lang.Class<?>,CurrentInstance> setCurrent(UI ui)
          Sets current instances for the UI and all related classes.
static java.util.Map<java.lang.Class<?>,CurrentInstance> setCurrent(VaadinSession session)
          Sets current instances for the VaadinSession and all related classes.
static
<T> void
setInheritable(java.lang.Class<T> type, T instance)
          Sets the current inheritable instance of the given type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

get

public static <T> T get(java.lang.Class<T> type)
Gets the current instance of a specific type if available.

Parameters:
type - the class to get an instance of
Returns:
the current instance or the provided type, or null if there is no current instance.

set

public static <T> void set(java.lang.Class<T> type,
                           T instance)
Sets the current instance of the given type.

Parameters:
type - the class that should be used when getting the current instance back
instance - the actual instance
See Also:
setInheritable(Class, Object), ThreadLocal

setInheritable

public static <T> void setInheritable(java.lang.Class<T> type,
                                      T instance)
Sets the current inheritable instance of the given type. A current instance that is inheritable will be available for child threads and in code run by VaadinSession.access(Runnable) and UI.access(Runnable).

Parameters:
type - the class that should be used when getting the current instance back
instance - the actual instance
See Also:
set(Class, Object), InheritableThreadLocal

clearAll

public static void clearAll()
Clears all current instances.


restoreInstances

public static void restoreInstances(java.util.Map<java.lang.Class<?>,CurrentInstance> old)
Restores the given instances to the given values. Note that this should only be used internally to restore Vaadin classes.

Parameters:
old - A Class -> CurrentInstance map to set as current instances
Since:
7.1

getInstances

public static java.util.Map<java.lang.Class<?>,CurrentInstance> getInstances(boolean onlyInheritable)
Gets the currently set instances so that they can later be restored using restoreInstances(Map).

Parameters:
onlyInheritable - true if only the inheritable instances should be included; false to get all instances.
Returns:
a map containing the current instances
Since:
7.1

setCurrent

public static java.util.Map<java.lang.Class<?>,CurrentInstance> setCurrent(UI ui)
Sets current instances for the UI and all related classes. The previously defined values can be restored by passing the returned map to restoreInstances(Map).

Parameters:
ui - The UI
Returns:
A map containing the old values of the instances that this method updated.
Since:
7.1

setCurrent

public static java.util.Map<java.lang.Class<?>,CurrentInstance> setCurrent(VaadinSession session)
Sets current instances for the VaadinSession and all related classes. The previously defined values can be restored by passing the returned map to restoreInstances(Map).

Parameters:
session - The VaadinSession
Returns:
A map containing the old values of the instances this method updated.
Since:
7.1


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