]> source.dussan.org Git - vaadin-framework.git/commitdiff
Make the (server-side) getState method protected (#9315)
authorLeif Åstrand <leif@vaadin.com>
Wed, 22 Aug 2012 18:12:47 +0000 (21:12 +0300)
committerLeif Åstrand <leif@vaadin.com>
Wed, 22 Aug 2012 18:12:47 +0000 (21:12 +0300)
30 files changed:
client/src/com/vaadin/terminal/gwt/client/ServerConnector.java
server/src/com/vaadin/terminal/AbstractClientConnector.java
server/src/com/vaadin/terminal/AbstractJavaScriptExtension.java
server/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
server/src/com/vaadin/terminal/gwt/server/ClientConnector.java
server/src/com/vaadin/terminal/gwt/server/DragAndDropService.java
server/src/com/vaadin/ui/AbsoluteLayout.java
server/src/com/vaadin/ui/AbstractComponent.java
server/src/com/vaadin/ui/AbstractField.java
server/src/com/vaadin/ui/AbstractJavaScriptComponent.java
server/src/com/vaadin/ui/AbstractLayout.java
server/src/com/vaadin/ui/AbstractMedia.java
server/src/com/vaadin/ui/AbstractOrderedLayout.java
server/src/com/vaadin/ui/AbstractSplitPanel.java
server/src/com/vaadin/ui/AbstractTextField.java
server/src/com/vaadin/ui/Button.java
server/src/com/vaadin/ui/CheckBox.java
server/src/com/vaadin/ui/Component.java
server/src/com/vaadin/ui/CssLayout.java
server/src/com/vaadin/ui/CustomLayout.java
server/src/com/vaadin/ui/Form.java
server/src/com/vaadin/ui/GridLayout.java
server/src/com/vaadin/ui/JavaScript.java
server/src/com/vaadin/ui/Label.java
server/src/com/vaadin/ui/Panel.java
server/src/com/vaadin/ui/Root.java
server/src/com/vaadin/ui/TextArea.java
server/src/com/vaadin/ui/Video.java
server/src/com/vaadin/ui/Window.java
shared/src/com/vaadin/shared/Connector.java

index 8788de74bf440f83edc103f9710af0a04142645b..d988c5f4a20ccf2139fe4c4173be7f4f5987913d 100644 (file)
@@ -22,6 +22,7 @@ import com.google.gwt.event.shared.GwtEvent;
 import com.google.web.bindery.event.shared.HandlerRegistration;
 import com.vaadin.shared.Connector;
 import com.vaadin.shared.communication.ClientRpc;
+import com.vaadin.shared.communication.SharedState;
 import com.vaadin.terminal.gwt.client.communication.StateChangeEvent.StateChangeHandler;
 
 /**
@@ -142,4 +143,13 @@ public interface ServerConnector extends Connector {
     public void setChildren(List<ServerConnector> children);
 
     public List<ServerConnector> getChildren();
+
+    /**
+     * Gets the current shared state of the connector.
+     * 
+     * @since 7.0.
+     * @return state The shared state object. Can be any sub type of
+     *         {@link SharedState}. Never null.
+     */
+    public SharedState getState();
 }
index bc1cd2af1aeab6c20bddc460df60c9d3151f11ec..a8da553a627b5ba45c2c022ca48cb6f3465062a3 100644 (file)
@@ -31,9 +31,12 @@ import java.util.NoSuchElementException;
 import java.util.logging.Logger;
 
 import com.vaadin.Application;
+import com.vaadin.external.json.JSONException;
+import com.vaadin.external.json.JSONObject;
 import com.vaadin.shared.communication.ClientRpc;
 import com.vaadin.shared.communication.ServerRpc;
 import com.vaadin.shared.communication.SharedState;
+import com.vaadin.terminal.gwt.server.AbstractCommunicationManager;
 import com.vaadin.terminal.gwt.server.ClientConnector;
 import com.vaadin.terminal.gwt.server.ClientMethodInvocation;
 import com.vaadin.terminal.gwt.server.RpcManager;
@@ -137,14 +140,18 @@ public abstract class AbstractClientConnector implements ClientConnector {
         registerRpc(implementation, type);
     }
 
-    @Override
-    public SharedState getState() {
+    protected SharedState getState() {
         if (null == sharedState) {
             sharedState = createState();
         }
         return sharedState;
     }
 
+    @Override
+    public JSONObject encodeState() throws JSONException {
+        return AbstractCommunicationManager.encodeState(this, getState());
+    }
+
     /**
      * Creates the shared state bean to be used in server to client
      * communication.
index aae71640aaabca14bd87141094e0a49c2b5e408e..1def6df69775ff4d3512b533e4b8024740884a41 100644 (file)
@@ -166,7 +166,7 @@ public abstract class AbstractJavaScriptExtension extends AbstractExtension {
     }
 
     @Override
-    public JavaScriptExtensionState getState() {
+    protected JavaScriptExtensionState getState() {
         return (JavaScriptExtensionState) super.getState();
     }
 }
index 99376ffd1f974da24317fb6fc02c3a10d9f46a38..7ea4a7d0975cad34819c1b4fb9996954fd485a5d 100644 (file)
@@ -880,49 +880,19 @@ public abstract class AbstractCommunicationManager implements Serializable {
         // processing.
         JSONObject sharedStates = new JSONObject();
         for (ClientConnector connector : dirtyVisibleConnectors) {
-            SharedState state = connector.getState();
-            if (null != state) {
-                // encode and send shared state
-                try {
-                    Class<? extends SharedState> stateType = connector
-                            .getStateType();
-                    Object diffState = rootConnectorTracker
-                            .getDiffState(connector);
-                    if (diffState == null) {
-                        diffState = new JSONObject();
-                        // Use an empty state object as reference for full
-                        // repaints
-                        boolean emptyInitialState = JavaScriptConnectorState.class
-                                .isAssignableFrom(stateType);
-                        if (!emptyInitialState) {
-                            try {
-                                SharedState referenceState = stateType
-                                        .newInstance();
-                                diffState = JsonCodec.encode(referenceState,
-                                        null, stateType,
-                                        root.getConnectorTracker());
-                            } catch (Exception e) {
-                                getLogger().log(
-                                        Level.WARNING,
-                                        "Error creating reference object for state of type "
-                                                + stateType.getName());
-                            }
-                        }
-                        rootConnectorTracker.setDiffState(connector, diffState);
-                    }
-                    JSONObject stateJson = (JSONObject) JsonCodec.encode(state,
-                            diffState, stateType, root.getConnectorTracker());
+            // encode and send shared state
+            try {
+                JSONObject stateJson = connector.encodeState();
 
-                    if (stateJson.length() != 0) {
-                        sharedStates.put(connector.getConnectorId(), stateJson);
-                    }
-                } catch (JSONException e) {
-                    throw new PaintException(
-                            "Failed to serialize shared state for connector "
-                                    + connector.getClass().getName() + " ("
-                                    + connector.getConnectorId() + "): "
-                                    + e.getMessage(), e);
+                if (stateJson != null && stateJson.length() != 0) {
+                    sharedStates.put(connector.getConnectorId(), stateJson);
                 }
+            } catch (JSONException e) {
+                throw new PaintException(
+                        "Failed to serialize shared state for connector "
+                                + connector.getClass().getName() + " ("
+                                + connector.getConnectorId() + "): "
+                                + e.getMessage(), e);
             }
         }
         outWriter.print("\"state\":");
@@ -1273,6 +1243,37 @@ public abstract class AbstractCommunicationManager implements Serializable {
         writePerformanceData(outWriter);
     }
 
+    public static JSONObject encodeState(ClientConnector connector,
+            SharedState state) throws JSONException {
+        Root root = connector.getRoot();
+        ConnectorTracker connectorTracker = root.getConnectorTracker();
+        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
+                    .isAssignableFrom(stateType);
+            if (!emptyInitialState) {
+                try {
+                    SharedState referenceState = stateType.newInstance();
+                    diffState = JsonCodec.encode(referenceState, null,
+                            stateType, root.getConnectorTracker());
+                } catch (Exception e) {
+                    getLogger().log(
+                            Level.WARNING,
+                            "Error creating reference object for state of type "
+                                    + stateType.getName());
+                }
+            }
+            connectorTracker.setDiffState(connector, diffState);
+        }
+        JSONObject stateJson = (JSONObject) JsonCodec.encode(state, diffState,
+                stateType, root.getConnectorTracker());
+        return stateJson;
+    }
+
     /**
      * Resolves a resource URI, registering the URI with this
      * {@code AbstractCommunicationManager} if needed and returns a fully
index c9fe2563f9a7851de154013c155372ae42f1f5f3..87524fe28f486799bf78efc65325346a84d41869 100644 (file)
@@ -18,6 +18,8 @@ package com.vaadin.terminal.gwt.server;
 import java.util.Collection;
 import java.util.List;
 
+import com.vaadin.external.json.JSONException;
+import com.vaadin.external.json.JSONObject;
 import com.vaadin.shared.Connector;
 import com.vaadin.shared.communication.SharedState;
 import com.vaadin.terminal.AbstractClientConnector;
@@ -177,4 +179,16 @@ public interface ClientConnector extends Connector, RpcTarget {
      * @since 7.0
      */
     public void beforeClientResponse(boolean initial);
+
+    /**
+     * Called by the framework to encode the state to a JSONObject. This is
+     * typically done by calling the static method
+     * {@link AbstractCommunicationManager#encodeState(ClientConnector, SharedState)}
+     * .
+     * 
+     * @return a JSON object with the encoded connector state
+     * @throws JSONException
+     *             if the state can not be encoded
+     */
+    public JSONObject encodeState() throws JSONException;
 }
index 56d5ed1393a55c5cb791c109d7275d9854311777..981d2569d1167050d14ca82e1ac47b12e3156c0c 100644 (file)
@@ -31,6 +31,8 @@ import com.vaadin.event.dd.DropTarget;
 import com.vaadin.event.dd.TargetDetails;
 import com.vaadin.event.dd.TargetDetailsImpl;
 import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.external.json.JSONException;
+import com.vaadin.external.json.JSONObject;
 import com.vaadin.shared.ApplicationConstants;
 import com.vaadin.shared.communication.SharedState;
 import com.vaadin.shared.ui.dd.DragEventType;
@@ -234,12 +236,6 @@ public class DragAndDropService implements VariableOwner, ClientConnector {
         return false;
     }
 
-    @Override
-    public SharedState getState() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
     @Override
     public String getConnectorId() {
         return ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID;
@@ -327,4 +323,10 @@ public class DragAndDropService implements VariableOwner, ClientConnector {
     public void beforeClientResponse(boolean initial) {
         // Nothing to do
     }
+
+    @Override
+    public JSONObject encodeState() throws JSONException {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }
index a3bc577fe3d343d4337f2ca811d726f737632066..8981895717e25f4e6d092ac81002c0b7936c8bb8 100644 (file)
@@ -61,7 +61,7 @@ public class AbsoluteLayout extends AbstractLayout implements
     }
 
     @Override
-    public AbsoluteLayoutState getState() {
+    protected AbsoluteLayoutState getState() {
         return (AbsoluteLayoutState) super.getState();
     }
 
index cde5217ca12a7f361628fdc09da63570026a927b..1eb95311cd0df55c139289b1d7fcbc1e275126fa 100644 (file)
@@ -713,7 +713,7 @@ public abstract class AbstractComponent extends AbstractClientConnector
      * @return updated component shared state
      */
     @Override
-    public ComponentState getState() {
+    protected ComponentState getState() {
         return (ComponentState) super.getState();
     }
 
index b914fb4c469c8d61144e54986078015394250a5d..8ac7b21daf15c13be554bd91946e3522d8cc1496 100644 (file)
@@ -1615,7 +1615,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
     }
 
     @Override
-    public AbstractFieldState getState() {
+    protected AbstractFieldState getState() {
         return (AbstractFieldState) super.getState();
     }
 
index c442bf2204ef3331cc685b9ba9946d0e47f1ad10..67b6447ef9bbdfab35c6b968f55cefe7997f23ab 100644 (file)
@@ -17,6 +17,8 @@ package com.vaadin.ui;
 
 import com.vaadin.shared.ui.JavaScriptComponentState;
 import com.vaadin.terminal.JavaScriptCallbackHelper;
+import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.ui.JavaScriptWidget;
 
 /**
  * Base class for Components with all client-side logic implemented using
@@ -90,9 +92,8 @@ import com.vaadin.terminal.JavaScriptCallbackHelper;
  * {@link #addFunction(String, JavaScriptFunction)} on the server will
  * automatically be present as a function that triggers the registered function
  * on the server.</li>
- * <li>Any field name referred to using
- * {@link #callFunction(String, Object...)} on the server will be called if a
- * function has been assigned to the field.</li>
+ * <li>Any field name referred to using {@link #callFunction(String, Object...)}
+ * on the server will be called if a function has been assigned to the field.</li>
  * </ul>
  * <p>
  * 
@@ -168,7 +169,7 @@ public abstract class AbstractJavaScriptComponent extends AbstractComponent {
     }
 
     @Override
-    public JavaScriptComponentState getState() {
+    protected JavaScriptComponentState getState() {
         return (JavaScriptComponentState) super.getState();
     }
 }
index dd1d5eab126ceea71964cb35197c028de701c220..6743b092111cfae19bc16a5d3d0840e81c5466b3 100644 (file)
@@ -29,7 +29,7 @@ public abstract class AbstractLayout extends AbstractComponentContainer
         implements Layout {
 
     @Override
-    public AbstractLayoutState getState() {
+    protected AbstractLayoutState getState() {
         return (AbstractLayoutState) super.getState();
     }
 
index 51a3bcd2be2aab3ce285dd7c46f3e59fda2cfe70..7a29c8f4ce4e6169df2052ef249367c845ea1b83 100644 (file)
@@ -33,7 +33,7 @@ import com.vaadin.terminal.gwt.server.ResourceReference;
 public abstract class AbstractMedia extends AbstractComponent {
 
     @Override
-    public AbstractMediaState getState() {
+    protected AbstractMediaState getState() {
         return (AbstractMediaState) super.getState();
     }
 
index 3ac4e76bdb42b4a7789482f46c6e33857fbf1d0b..cac9c05fb8e00500b3d9a6d8463beab208669179 100644 (file)
@@ -63,7 +63,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
     }
 
     @Override
-    public AbstractOrderedLayoutState getState() {
+    protected AbstractOrderedLayoutState getState() {
         return (AbstractOrderedLayoutState) super.getState();
     }
 
@@ -394,6 +394,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
         return components.get(index);
     }
 
+    @Override
     public void setMargin(boolean enabled) {
         setMargin(new MarginInfo(enabled));
     }
@@ -403,6 +404,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
      * 
      * @see com.vaadin.ui.Layout.MarginHandler#getMargin()
      */
+    @Override
     public MarginInfo getMargin() {
         return new MarginInfo(getState().getMarginsBitmask());
     }
@@ -412,6 +414,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
      * 
      * @see com.vaadin.ui.Layout.MarginHandler#setMargin(MarginInfo)
      */
+    @Override
     public void setMargin(MarginInfo marginInfo) {
         getState().setMarginsBitmask(marginInfo.getBitMask());
         requestRepaint();
index 03e8a2dfb609d421250e59387079da73b2314362..68964e2c350251953a0e9a7bb83e56a698566cfc 100644 (file)
@@ -520,7 +520,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
     }
 
     @Override
-    public AbstractSplitPanelState getState() {
+    protected AbstractSplitPanelState getState() {
         return (AbstractSplitPanelState) super.getState();
     }
 
index 86315f801f4b4c8fa48889f36115c16cefe52698..54d15eff26fbaf39c41d7b01e0bc41046effcb60 100644 (file)
@@ -92,7 +92,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
     }
 
     @Override
-    public AbstractTextFieldState getState() {
+    protected AbstractTextFieldState getState() {
         return (AbstractTextFieldState) super.getState();
     }
 
index f568d770e8e5ea8229c8b7ef8f59f1529d4d7696..c55a9556790440186a79df31e91f49ca1eab874b 100644 (file)
@@ -509,7 +509,7 @@ public class Button extends AbstractComponent implements
     }
 
     @Override
-    public ButtonState getState() {
+    protected ButtonState getState() {
         return (ButtonState) super.getState();
     }
 
index 158c9d0032f1ffeaf2b690f5b281083fc4ef3d7d..6da86b971175d170868729feed7b6f7bcb1e2287 100644 (file)
@@ -106,7 +106,7 @@ public class CheckBox extends AbstractField<Boolean> {
     }
 
     @Override
-    public CheckBoxState getState() {
+    protected CheckBoxState getState() {
         return (CheckBoxState) super.getState();
     }
 
index ff7ed47930f35835b9aad789bd905de7922660d8..89e282d4e1c7ee86a74561a3d7ae84d67b317f4e 100644 (file)
@@ -23,7 +23,6 @@ import java.util.Locale;
 
 import com.vaadin.Application;
 import com.vaadin.event.FieldEvents;
-import com.vaadin.shared.ComponentState;
 import com.vaadin.terminal.ErrorMessage;
 import com.vaadin.terminal.Resource;
 import com.vaadin.terminal.Sizeable;
@@ -623,19 +622,6 @@ public interface Component extends ClientConnector, Sizeable, Serializable {
      */
     public Locale getLocale();
 
-    /**
-     * Returns the current shared state bean for the component. The state (or
-     * changes to it) is communicated from the server to the client.
-     * 
-     * Subclasses can use a more specific return type for this method.
-     * 
-     * @return The state object for the component
-     * 
-     * @since 7.0
-     */
-    @Override
-    public ComponentState getState();
-
     /**
      * Adds an unique id for component that get's transferred to terminal for
      * testing purposes. Keeping identifiers unique is the responsibility of the
index 0192debc4a8b86d0171c2dde2974c33bd9075cd7..c80986b768d9583381cbb0aa2b84ae002fda3024 100644 (file)
@@ -211,7 +211,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier {
     }
 
     @Override
-    public CssLayoutState getState() {
+    protected CssLayoutState getState() {
         return (CssLayoutState) super.getState();
     }
 
index d47b2f92b3e0a7765c09121d399f13086ed08f3b..0948a92e5b22d5d6289f5bc13be2bf34f67efe6a 100644 (file)
@@ -123,7 +123,7 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component {
     }
 
     @Override
-    public CustomLayoutState getState() {
+    protected CustomLayoutState getState() {
         return (CustomLayoutState) super.getState();
     }
 
index a1ec0f991726755bb0bdb94f823155b8dad43c80..8efd85009c5681beecdb528d68caee3d710da1d3 100644 (file)
@@ -200,7 +200,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
     }
 
     @Override
-    public FormState getState() {
+    protected FormState getState() {
         return (FormState) super.getState();
     }
 
index b31ab82741182be0e1c6323fad09fe1542e1fb31..52aef4c2533e30aa0b2d70ae7a43f1c69bb30974 100644 (file)
@@ -141,7 +141,7 @@ public class GridLayout extends AbstractLayout implements
     }
 
     @Override
-    public GridLayoutState getState() {
+    protected GridLayoutState getState() {
         return (GridLayoutState) super.getState();
     }
 
index 35cc1893f653cc3177cda27923b3ef332a67fc5b..5984c63e7a76184dd5ebc53748be83f3236b60f0 100644 (file)
@@ -66,7 +66,7 @@ public class JavaScript extends AbstractExtension {
     }
 
     @Override
-    public JavaScriptManagerState getState() {
+    protected JavaScriptManagerState getState() {
         return (JavaScriptManagerState) super.getState();
     }
 
index 10fa7410586010c7062007c1235951f3adb695aa..d0a60598650a4f10dc4d84fb731dac27e770193c 100644 (file)
@@ -151,7 +151,7 @@ public class Label extends AbstractComponent implements Property<String>,
     }
 
     @Override
-    public LabelState getState() {
+    protected LabelState getState() {
         return (LabelState) super.getState();
     }
 
index ba68238707801e909afbbe609c5d5f526844d121..985eed8a28e756acf077ff3881a017c08f04a11a 100644 (file)
@@ -489,7 +489,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable,
     }
 
     @Override
-    public PanelState getState() {
+    protected PanelState getState() {
         return (PanelState) super.getState();
     }
 
index 020ff869faef2697ccd0599abdfabdb64cbeac6a..4b90d613bb54b64f5e72ce1b9bdb161ea5a27b38 100644 (file)
@@ -498,7 +498,7 @@ public abstract class Root extends AbstractComponentContainer implements
     }
 
     @Override
-    public RootState getState() {
+    protected RootState getState() {
         return (RootState) super.getState();
     }
 
index fed06b561a96f58b603a305c8e5c8c747c58a67c..f885781d46df3f5d4a013cc4716d79f91648d547 100644 (file)
@@ -81,7 +81,7 @@ public class TextArea extends AbstractTextField {
     }
 
     @Override
-    public TextAreaState getState() {
+    protected TextAreaState getState() {
         return (TextAreaState) super.getState();
     }
 
index 95a38c59d5f1f1e59ffac3bc7f5ab93050155d35..04ecc9af065f008266ac6ccaed75d5722f13acdd 100644 (file)
@@ -44,7 +44,7 @@ import com.vaadin.terminal.gwt.server.ResourceReference;
 public class Video extends AbstractMedia {
 
     @Override
-    public VideoState getState() {
+    protected VideoState getState() {
         return (VideoState) super.getState();
     }
 
index d1d2c25d8b8f014bc8205aaf30b4e4c57ab8a2ab..705e093bce6e6f1438271edd8a87478af87767f3 100644 (file)
@@ -838,7 +838,7 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
     }
 
     @Override
-    public WindowState getState() {
+    protected WindowState getState() {
         return (WindowState) super.getState();
     }
 }
index 5a00f6cca2d27d583de18d837748536b36c7305d..5927d08d796f1ba043a6d36991aaf1a437cd8eab 100644 (file)
@@ -17,8 +17,6 @@ package com.vaadin.shared;
 
 import java.io.Serializable;
 
-import com.vaadin.shared.communication.SharedState;
-
 /**
  * Interface implemented by all classes that are capable of communicating with
  * the server or the client side.
@@ -40,15 +38,6 @@ import com.vaadin.shared.communication.SharedState;
  * @since 7.0.0
  */
 public interface Connector extends Serializable {
-    /**
-     * Gets the current shared state of the connector.
-     * 
-     * @since 7.0.
-     * @return state The shared state object. Can be any sub type of
-     *         {@link SharedState}. Never null.
-     */
-    public SharedState getState();
-
     /**
      * Returns the id for this connector. This is set by the framework and does
      * not change during the lifetime of a connector.