/* * Smart GWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * Smart GWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. Smart GWT is also * available under typical commercial license terms - see * http://smartclient.com/license * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package com.smartgwt.client.rpc; /** * This class provides static methods to call server-side DMI methods exposed via a * {@link com.smartgwt.client.docs.ApplicationDeclaration} file. * <p><b>Note</b>:  This class is only functional if you have Smart GWT Pro or above.</p> */ public class DMI { /** * Static method to call a server-side DMI method exposed via a * {@link com.smartgwt.client.docs.ApplicationDeclaration} file. * Each argument passed into this method will be serialized to JSON, then converted back into Java * on the server, and passed to the server side method, The translation follows the same rules * described in {@link com.smartgwt.client.rpc.RPCRequest#setData(com.google.gwt.core.client.JavaScriptObject)}. * * @param appID Name of the {@link com.smartgwt.client.docs.ApplicationDeclaration} (.app.xml) file to look in * @param className className (or ID) of the server object on which the method will be invoked * @param methodName The name of the method to call on the serverObject * @param callback Callback to execute when the DMI call completes * @param arguments array of arguments to pass to the server side method */ public static void call(String appID, String className, String methodName, RPCCallback callback, Object[] arguments) { call(appID, className, methodName, callback, arguments, null); } /** * Static method to call a server-side DMI method exposed via a * {@link com.smartgwt.client.docs.ApplicationDeclaration} file. * Each argument passed into this method will be serialized to JSON, then converted back into Java * on the server, and passed to the server side method, The translation follows the same rules * described in {@link com.smartgwt.client.rpc.RPCRequest#setData(com.google.gwt.core.client.JavaScriptObject)}. * * @param appID Name of the {@link com.smartgwt.client.docs.ApplicationDeclaration} (.app.xml) file to look in * @param className className (or ID) of the server object on which the method will be invoked * @param methodName The name of the method to call on the serverObject * @param callback Callback to execute when the DMI call completes * @param arguments array of arguments to pass to the server side method * @param requestParams Any additional properties that you want to set. The properties * will be applied to the {@link com.smartgwt.client.rpc.RPCRequest RPCRequest} generated * by this DMI call. */ public native static void call(String appID, String className, String methodName, RPCCallback callback, Object[] arguments, RPCRequest requestParams) /*-{ var licenseType = @com.smartgwt.client.util.SC::getLicenseType()(); if ("LGPL" == licenseType) { var errorMessage = "The DMI class requires Smart GWT Pro or above."; @com.smartgwt.client.util.SC::logWarn(Ljava/lang/String;)(errorMessage); throw @java.lang.UnsupportedOperationException::new(Ljava/lang/String;)(errorMessage); } var jscallback = $entry(function (rpcResponse, data, rpcRequest) { var responseJ = @com.smartgwt.client.rpc.RPCResponse::new(Lcom/google/gwt/core/client/JavaScriptObject;)(rpcResponse); var requestJ = @com.smartgwt.client.rpc.RPCRequest::new(Lcom/google/gwt/core/client/JavaScriptObject;)(rpcRequest); if(callback != null) callback.@com.smartgwt.client.rpc.RPCCallback::execute(Lcom/smartgwt/client/rpc/RPCResponse;Ljava/lang/Object;Lcom/smartgwt/client/rpc/RPCRequest;)(responseJ, data, requestJ); }); var jsParams = arguments == null ? null : @com.smartgwt.client.util.JSOHelper::convertToJavaScriptArray([Ljava/lang/Object;Z)(arguments, true); var jsRequestParams = requestParams == null ? null : requestParams.@com.smartgwt.client.rpc.RPCRequest::getJsObj()(); $wnd.isc.DMI.call({ appID: appID, className: className, methodName: methodName, arguments: jsParams, callback: jscallback, requestParams: jsRequestParams }); }-*/; }