]> source.dussan.org Git - vaadin-framework.git/commitdiff
Use JavaScriptMethodInvocation to detect js invocations (#10549) 38/538/2
authorLeif Åstrand <leif@vaadin.com>
Wed, 19 Dec 2012 12:33:42 +0000 (14:33 +0200)
committerVaadin Code Review <review@vaadin.com>
Wed, 19 Dec 2012 12:59:40 +0000 (12:59 +0000)
Change-Id: Ib5c1f5c55f101ef51418b44dcfc9b4278f3ec313

client/src/com/vaadin/client/ApplicationConnection.java
client/src/com/vaadin/client/JavaScriptConnectorHelper.java
client/src/com/vaadin/client/communication/JavaScriptMethodInvocation.java [new file with mode: 0644]
client/src/com/vaadin/client/extensions/javascriptmanager/JavaScriptManagerConnector.java

index 4a625383a5188c589b3cd73adbfd1771e4a1965f..63dfde795bf7b7951b526b6704d2bffebcb66862 100644 (file)
@@ -65,6 +65,7 @@ import com.vaadin.client.ApplicationConfiguration.ErrorMessage;
 import com.vaadin.client.ResourceLoader.ResourceLoadEvent;
 import com.vaadin.client.ResourceLoader.ResourceLoadListener;
 import com.vaadin.client.communication.HasJavaScriptConnectorHelper;
+import com.vaadin.client.communication.JavaScriptMethodInvocation;
 import com.vaadin.client.communication.JsonDecoder;
 import com.vaadin.client.communication.JsonEncoder;
 import com.vaadin.client.communication.RpcManager;
@@ -2459,9 +2460,7 @@ public class ApplicationConnection {
     }
 
     private boolean isJavascriptRpc(MethodInvocation invocation) {
-        String connectorId = invocation.getConnectorId();
-        ServerConnector connector = connectorMap.getConnector(connectorId);
-        return connector instanceof HasJavaScriptConnectorHelper;
+        return invocation instanceof JavaScriptMethodInvocation;
     }
 
     private boolean isLegacyVariableChange(MethodInvocation invocation) {
index b275cd0a680ad9d0936926436078b0d8db10c488..73752e4ddb351b3fcfd3772f72b912ecc05bdf6f 100644 (file)
@@ -27,6 +27,7 @@ import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.JsArray;
 import com.google.gwt.json.client.JSONArray;
 import com.google.gwt.user.client.Element;
+import com.vaadin.client.communication.JavaScriptMethodInvocation;
 import com.vaadin.client.communication.StateChangeEvent;
 import com.vaadin.client.communication.StateChangeEvent.StateChangeHandler;
 import com.vaadin.shared.JavaScriptConnectorState;
@@ -258,8 +259,8 @@ public class JavaScriptConnectorHelper {
             parameters[i] = argumentsArray.get(i);
         }
         connector.getConnection().addMethodInvocationToQueue(
-                new MethodInvocation(connector.getConnectorId(), iface, method,
-                        parameters), false, false);
+                new JavaScriptMethodInvocation(connector.getConnectorId(),
+                        iface, method, parameters), false, false);
     }
 
     private String findWildcardInterface(String method) {
@@ -286,7 +287,7 @@ public class JavaScriptConnectorHelper {
     }
 
     private void fireCallback(String name, JsArray<JavaScriptObject> arguments) {
-        MethodInvocation invocation = new MethodInvocation(
+        MethodInvocation invocation = new JavaScriptMethodInvocation(
                 connector.getConnectorId(),
                 "com.vaadin.ui.JavaScript$JavaScriptCallbackRpc", "call",
                 new Object[] { name, new JSONArray(arguments) });
diff --git a/client/src/com/vaadin/client/communication/JavaScriptMethodInvocation.java b/client/src/com/vaadin/client/communication/JavaScriptMethodInvocation.java
new file mode 100644 (file)
index 0000000..00f563e
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2012 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.vaadin.client.communication;
+
+import com.vaadin.shared.communication.MethodInvocation;
+
+/**
+ * A {@link MethodInvocation} that originates from JavaScript. This means that
+ * there might not be any type information available on the client.
+ * 
+ * @author Vaadin Ltd
+ * @since 7.0.0
+ */
+public class JavaScriptMethodInvocation extends MethodInvocation {
+
+    public JavaScriptMethodInvocation(String connectorId, String interfaceName,
+            String methodName, Object[] parameters) {
+        super(connectorId, interfaceName, methodName, parameters);
+    }
+}
index 2550fce208ae0386935d5ac6337ef4c521e0631d..078e19f73bdb64eff7ada7bbb82e752d0c872b52 100644 (file)
@@ -24,8 +24,8 @@ import com.google.gwt.core.client.JsArray;
 import com.google.gwt.json.client.JSONArray;
 import com.vaadin.client.ServerConnector;
 import com.vaadin.client.communication.StateChangeEvent;
+import com.vaadin.client.communication.JavaScriptMethodInvocation;
 import com.vaadin.client.extensions.AbstractExtensionConnector;
-import com.vaadin.shared.communication.MethodInvocation;
 import com.vaadin.shared.extension.javascriptmanager.ExecuteJavaScriptRpc;
 import com.vaadin.shared.extension.javascriptmanager.JavaScriptManagerState;
 import com.vaadin.shared.ui.Connect;
@@ -123,7 +123,7 @@ public class JavaScriptManagerConnector extends AbstractExtensionConnector {
          * because of the JSONArray parameter
          */
         getConnection().addMethodInvocationToQueue(
-                new MethodInvocation(getConnectorId(),
+                new JavaScriptMethodInvocation(getConnectorId(),
                         "com.vaadin.ui.JavaScript$JavaScriptCallbackRpc",
                         "call", parameters), false, false);
     }