]> source.dussan.org Git - vaadin-framework.git/commitdiff
#8504 Support passing Connector references to/from client
authorArtur Signell <artur@vaadin.com>
Tue, 13 Mar 2012 18:40:27 +0000 (20:40 +0200)
committerArtur Signell <artur@vaadin.com>
Wed, 14 Mar 2012 14:00:56 +0000 (16:00 +0200)
src/com/vaadin/terminal/gwt/client/communication/JsonDecoder.java
src/com/vaadin/terminal/gwt/server/JsonCodec.java
src/com/vaadin/ui/Component.java

index 0eaa106b43da1acef8db8a90aafce88798cb0a71..33a415a91d35d695dee44d36b474f48bec47a0a2 100644 (file)
@@ -15,8 +15,8 @@ import com.google.gwt.json.client.JSONArray;
 import com.google.gwt.json.client.JSONObject;
 import com.google.gwt.json.client.JSONString;
 import com.vaadin.terminal.gwt.client.ApplicationConnection;
-import com.vaadin.terminal.gwt.client.ServerConnector;
 import com.vaadin.terminal.gwt.client.ConnectorMap;
+import com.vaadin.terminal.gwt.client.ServerConnector;
 
 /**
  * Client side decoder for decodeing shared state and other values from JSON
@@ -39,7 +39,8 @@ public class JsonDecoder {
      * @param jsonArray
      *            JSON array with two elements
      * @param idMapper
-     *            mapper between connector ID and {@link ServerConnector} objects
+     *            mapper between connector ID and {@link ServerConnector}
+     *            objects
      * @param connection
      *            reference to the current ApplicationConnection
      * @return decoded value (does not contain JSON types)
@@ -82,8 +83,7 @@ public class JsonDecoder {
             // TODO handle properly
             val = Boolean.valueOf(String.valueOf(value));
         } else if (JsonEncoder.VTYPE_PAINTABLE.equals(variableType)) {
-            // TODO handle properly
-            val = idMapper.getConnector(String.valueOf(value));
+            val = idMapper.getConnector(((JSONString) value).stringValue());
         } else {
             // object, class name as type
             JSONSerializer serializer = serializerMap
index 4b3f41508e3ee4c9f1632c2dc407657d4a384d31..44180e78c9cf62503fb9291f5570863d96ccefec 100644 (file)
@@ -20,6 +20,7 @@ import com.vaadin.external.json.JSONArray;
 import com.vaadin.external.json.JSONException;
 import com.vaadin.external.json.JSONObject;
 import com.vaadin.terminal.Paintable;
+import com.vaadin.terminal.gwt.client.Connector;
 import com.vaadin.terminal.gwt.client.communication.JsonEncoder;
 
 /**
@@ -35,6 +36,7 @@ public class JsonCodec implements Serializable {
     static {
         registerType(String.class, JsonEncoder.VTYPE_STRING);
         registerType(Paintable.class, JsonEncoder.VTYPE_PAINTABLE);
+        registerType(Connector.class, JsonEncoder.VTYPE_PAINTABLE);
         registerType(Boolean.class, JsonEncoder.VTYPE_BOOLEAN);
         registerType(Integer.class, JsonEncoder.VTYPE_INTEGER);
         registerType(Float.class, JsonEncoder.VTYPE_FLOAT);
index 9c3f1a02f1e112289ba79224931ff924ae8786e2..d3efb74118972584aeb9ef9be91fb5c4f9cf27ac 100644 (file)
@@ -18,6 +18,7 @@ import com.vaadin.terminal.Resource;
 import com.vaadin.terminal.Sizeable;
 import com.vaadin.terminal.VariableOwner;
 import com.vaadin.terminal.gwt.client.ComponentState;
+import com.vaadin.terminal.gwt.client.Connector;
 import com.vaadin.terminal.gwt.server.RpcTarget;
 
 /**
@@ -53,8 +54,8 @@ import com.vaadin.terminal.gwt.server.RpcTarget;
  * @VERSION@
  * @since 3.0
  */
-public interface Component extends Paintable, VariableOwner, Sizeable,
-        Serializable, RpcTarget {
+public interface Component extends Connector, Paintable, VariableOwner,
+        Sizeable, Serializable, RpcTarget {
 
     /**
      * Gets all user-defined CSS style names of a component. If the component