summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/src/main/java/com/vaadin/server/LegacyCommunicationManager.java24
1 files changed, 23 insertions, 1 deletions
diff --git a/server/src/main/java/com/vaadin/server/LegacyCommunicationManager.java b/server/src/main/java/com/vaadin/server/LegacyCommunicationManager.java
index eabca9fc09..dff4187637 100644
--- a/server/src/main/java/com/vaadin/server/LegacyCommunicationManager.java
+++ b/server/src/main/java/com/vaadin/server/LegacyCommunicationManager.java
@@ -29,6 +29,8 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import com.vaadin.server.ClientConnector.ConnectorErrorEvent;
+import com.vaadin.server.ClientConnector.DetachEvent;
+import com.vaadin.server.ClientConnector.DetachListener;
import com.vaadin.shared.ApplicationConstants;
import com.vaadin.shared.JavaScriptConnectorState;
import com.vaadin.shared.communication.SharedState;
@@ -189,17 +191,37 @@ public class LegacyCommunicationManager implements Serializable {
* @deprecated As of 7.1. See #11410.
*/
@Deprecated
- public ClientCache getClientCache(UI uI) {
+ public ClientCache getClientCache(final UI uI) {
Integer uiId = Integer.valueOf(uI.getUIId());
ClientCache cache = uiToClientCache.get(uiId);
if (cache == null) {
cache = new ClientCache();
uiToClientCache.put(uiId, cache);
+ uI.addDetachListener(new DetachListener() {
+ @Override
+ public void detach(DetachEvent event) {
+ removeClientCache(uI);
+ }
+ });
}
return cache;
}
/**
+ * Clear out client cache for the given UI. This should be called when the
+ * UI is detached and the cache becomes obsolete.
+ *
+ * @param uI
+ * the UI whose client cache should be removed
+ * @deprecated because this cleanup is only needed for a deprecated feature
+ */
+ @Deprecated
+ private void removeClientCache(UI uI) {
+ Integer uiId = Integer.valueOf(uI.getUIId());
+ uiToClientCache.remove(uiId);
+ }
+
+ /**
* Checks if the connector is visible in context. For Components,
* {@link #isComponentVisibleToClient(Component)} is used. For other types
* of connectors, the contextual visibility of its first Component ancestor