]> source.dussan.org Git - vaadin-framework.git/commitdiff
Clarify lock check assert message if another session is locked (#13473)
authorLeif Åstrand <leif@vaadin.com>
Tue, 18 Mar 2014 11:48:07 +0000 (13:48 +0200)
committerLeif Åstrand <leif@vaadin.com>
Thu, 17 Apr 2014 07:54:59 +0000 (07:54 +0000)
Picking this to the 7.2 branch since the other part of the ticket was already included in 7.2.

Change-Id: I1120ad5acd553e22db95e3635fffbd453fd26310
(cherry picked from commit 134c3bb96bfeaf1eab488e685f3b5dce3093e0ef)

server/src/com/vaadin/server/AbstractClientConnector.java

index a73ca3d985b9f22700fa25eed9a96dc1f67e514e..9fc4a9c3a28ddf8621d7898a3eae91b1b8f47382 100644 (file)
@@ -132,13 +132,22 @@ public abstract class AbstractClientConnector implements ClientConnector,
     /* Documentation copied from interface */
     @Override
     public void markAsDirty() {
-        assert getSession() == null || getSession().hasLock() : "Session must be locked when markAsDirty() is called";
+        assert getSession() == null || getSession().hasLock() : buildLockAssertMessage("markAsDirty()");
         UI uI = getUI();
         if (uI != null) {
             uI.getConnectorTracker().markDirty(this);
         }
     }
 
+    private String buildLockAssertMessage(String method) {
+        if (VaadinService.isOtherSessionLocked(getSession())) {
+            return "The session of this connecor is not locked, but there is another session that is locked. "
+                    + "This might be caused by accidentally using a connector that belongs to another session.";
+        } else {
+            return "Session must be locked when " + method + " is called";
+        }
+    }
+
     /**
      * Registers an RPC interface implementation for this component.
      * 
@@ -217,7 +226,7 @@ public abstract class AbstractClientConnector implements ClientConnector,
      * @see #getState()
      */
     protected SharedState getState(boolean markAsDirty) {
-        assert getSession() == null || getSession().hasLock() : "Session must be locked when getState() is called";
+        assert getSession() == null || getSession().hasLock() : buildLockAssertMessage("getState()");
 
         if (null == sharedState) {
             sharedState = createState();