]> source.dussan.org Git - vaadin-framework.git/commitdiff
Don't ever send state diffs for JavaScript connectors (#9026)
authorLeif Åstrand <leif@vaadin.com>
Fri, 24 Aug 2012 08:46:23 +0000 (11:46 +0300)
committerLeif Åstrand <leif@vaadin.com>
Fri, 24 Aug 2012 08:46:23 +0000 (11:46 +0300)
server/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java

index 7ea4a7d0975cad34819c1b4fb9996954fd485a5d..b2436b2ce46ce01a0cf02c1ab0d4abbb8f948364 100644 (file)
@@ -1250,12 +1250,13 @@ public abstract class AbstractCommunicationManager implements Serializable {
         Class<? extends SharedState> stateType = connector.getStateType();
         Object diffState = connectorTracker.getDiffState(connector);
         if (diffState == null) {
-            diffState = new JSONObject();
             // Use an empty state object as reference for full
             // repaints
-            boolean emptyInitialState = JavaScriptConnectorState.class
+
+            boolean supportsDiffState = !JavaScriptConnectorState.class
                     .isAssignableFrom(stateType);
-            if (!emptyInitialState) {
+            if (supportsDiffState) {
+                diffState = new JSONObject();
                 try {
                     SharedState referenceState = stateType.newInstance();
                     diffState = JsonCodec.encode(referenceState, null,
@@ -1266,8 +1267,8 @@ public abstract class AbstractCommunicationManager implements Serializable {
                             "Error creating reference object for state of type "
                                     + stateType.getName());
                 }
+                connectorTracker.setDiffState(connector, diffState);
             }
-            connectorTracker.setDiffState(connector, diffState);
         }
         JSONObject stateJson = (JSONObject) JsonCodec.encode(state, diffState,
                 stateType, root.getConnectorTracker());