summaryrefslogtreecommitdiffstats
path: root/client-compiler
diff options
context:
space:
mode:
Diffstat (limited to 'client-compiler')
-rw-r--r--client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java b/client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java
index 13bd7051f6..f946d87638 100644
--- a/client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java
+++ b/client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java
@@ -47,6 +47,7 @@ import com.google.gwt.user.rebind.SourceWriter;
import com.vaadin.client.JsArrayObject;
import com.vaadin.client.ServerConnector;
import com.vaadin.client.annotations.OnStateChange;
+import com.vaadin.client.communication.JsonDecoder;
import com.vaadin.client.metadata.ConnectorBundleLoader;
import com.vaadin.client.metadata.ConnectorBundleLoader.CValUiInfo;
import com.vaadin.client.metadata.InvokationHandler;
@@ -1011,7 +1012,16 @@ public class ConnectorBundleLoaderFactory extends Generator {
w.print(", ");
}
String parameterTypeName = getBoxedTypeName(parameterType);
- w.print("(" + parameterTypeName + ") params[" + i + "]");
+
+ if (parameterTypeName.startsWith("elemental.json.Json")) {
+ // Need to pass through native method to allow casting Object to
+ // JSO if the value is a string
+ w.print("%s.<%s>obj2jso(params[%d])",
+ JsonDecoder.class.getCanonicalName(),
+ parameterTypeName, i);
+ } else {
+ w.print("(" + parameterTypeName + ") params[" + i + "]");
+ }
}
w.println(");");