com.isomorphic.rpc
Class BuiltinRPC

java.lang.Object
  |
  +--com.isomorphic.base.Base
        |
        +--com.isomorphic.rpc.BuiltinRPC

public class BuiltinRPC
extends com.isomorphic.base.Base

This class implements a set of "built-in" RPC methods that are available to all applications as part of the standard SmartClient distribution. Most of these methods should not be callable from the client in a production setting. By default, all of these are enabled in the smartclientSDK and only the methods flagged as enabled in smartclientRuntime are enabled there by default.

You can control which methods are enabled by listing the enabled methods under the server.properties attribute RPCManager.enabledBuiltinMethods. Additionally, you must set RPCManager.enableBuiltinRPCs: true in server.properties to enable bulitin RPCs.


Method Summary
static RPCResponse appendToFile(java.lang.String path, java.lang.String data)
          Appends the supplied contents to a file under webroot.
static RPCResponse deleteFile(java.lang.String path)
          Deletes an arbitrary file under webRoot.
static void downloadWSDL(java.lang.String url, java.lang.String format, java.lang.String fileName, RPCManager rpc, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Loads a WSDL file from the specified URL, optionally translates it to SmartClient-compatiable JS format and streams the file back to the requester via content-disposition: attachment.
static RPCResponse evalJava(java.lang.String javaCode, RequestContext context)
          This method is used by the "Evaluate Java" section of the Developer Console (in the Results tab).
static java.util.List getLogEntries(java.lang.String logName)
          Returns the contents of the specified log4j log.
static java.util.List getLogNames()
          Returns the list of available log4j log names.
static RPCResponse loadFile(java.lang.String path)
          Returns the contents of any file under webRoot as a String.
static RPCResponse loadSharedXML(java.lang.String type, java.lang.String ID)
          Load a DS, UI, or APP file from the standard search path.
static RPCResponse saveFile(java.lang.String path, java.lang.String data)
          Saves a file under webRoot with the supplied contents.
static RPCResponse saveSharedXML(java.lang.String type, java.lang.String ID, java.lang.String contents)
          Writes or overwrites a UI, DS or APP file with the provided contents.
static RPCResponse uploadProgressCheck(javax.servlet.http.HttpSession session, java.lang.String formID)
          Used by the FileUpload control to periodically check the progress of a file upload.
static RPCResponse xmlToJS(java.lang.String xmlString)
          Translates XML to JS in exactly the same fashion as done by the <isomorphicXML> JSP tag.
 

Method Detail

downloadWSDL

public static void downloadWSDL(java.lang.String url,
                                java.lang.String format,
                                java.lang.String fileName,
                                RPCManager rpc,
                                javax.servlet.http.HttpServletRequest request,
                                javax.servlet.http.HttpServletResponse response)
                         throws java.lang.Exception
Loads a WSDL file from the specified URL, optionally translates it to SmartClient-compatiable JS format and streams the file back to the requester via content-disposition: attachment.

This method is used by the Download feature of the WSDL tab in the Developer Console.

Parameters:
url - The URL from which to load the WSDL file. Can be relative or absolute.
format - Set to 'xml' to stream the file without translation to JS or 'js' to get translated output.
fileName - This method returns a stream with content-disposition: attachment. This argument specifies the default filename that will be shown to the user in the "save as" dialog that comes up in the browser.

xmlToJS

public static RPCResponse xmlToJS(java.lang.String xmlString)
                           throws java.lang.Exception
Translates XML to JS in exactly the same fashion as done by the <isomorphicXML> JSP tag.

This method is enabled by default in smartclientRuntime

Parameters:
xmlString - String of XML to be translated to JS.
Returns:
The 'data' payload of the RPCResponse is a String containing the translated result. If an error occurs, status is set to STATUS_FAILURE and 'data' contains the error string.

uploadProgressCheck

public static RPCResponse uploadProgressCheck(javax.servlet.http.HttpSession session,
                                              java.lang.String formID)
                                       throws java.lang.Exception
Used by the FileUpload control to periodically check the progress of a file upload.

This method is enabled by default in smartclientRuntime

Parameters:
formID - The ID of the form uploading the file.
Returns:
The 'data' payload of the RPCResponse is a Map that contains two attributes: bytesSoFar and totalBytes. If an error occurs, status is set to STATUS_FAILURE and 'data' contains the error string.

deleteFile

public static RPCResponse deleteFile(java.lang.String path)
                              throws java.lang.Exception
Deletes an arbitrary file under webRoot.

This method is used by the Visual Builder tool.

Parameters:
path - file to delete, must be relative to webRoot.
Returns:
an RPCResponse with STATUS_SUCCESS if successful, STATUS_FAILURE with 'data' set to the error string otherwise.

saveFile

public static RPCResponse saveFile(java.lang.String path,
                                   java.lang.String data)
                            throws java.lang.Exception
Saves a file under webRoot with the supplied contents.

This method is used by the Visual Builder tool.

Parameters:
path - location of new file, must be relative to webRoot
data - contents of new file
Returns:
an RPCResponse with STATUS_SUCCESS if successful, STATUS_FAILURE with 'data' set to the error string otherwise.

appendToFile

public static RPCResponse appendToFile(java.lang.String path,
                                       java.lang.String data)
                                throws java.lang.Exception
Appends the supplied contents to a file under webroot. If the file does not exist, this method is the same as saveFile.
Parameters:
path - location of file, must be relative to webRoot
data - text to append to file
Returns:
an RPCResponse with STATUS_SUCCESS if successful, STATUS_FAILURE with 'data' set to the error string otherwise.

loadFile

public static RPCResponse loadFile(java.lang.String path)
                            throws java.lang.Exception
Returns the contents of any file under webRoot as a String.

This method is used by the Visual Builder tool.

Parameters:
path - location of file to load
Returns:
'data' payload of RPCResponse contains the contents of the file. If an error occurs, status is set to STATUS_FAILURE and 'data' contains the error string.

evalJava

public static RPCResponse evalJava(java.lang.String javaCode,
                                   RequestContext context)
                            throws java.lang.Exception
This method is used by the "Evaluate Java" section of the Developer Console (in the Results tab). It takes java code and writes it to a temporary JSP, sandwiched by the contents of /shared/jsp/evalJavaHeader.jsp and /shared/jsp/evalJavaFooter.jsp. Then the resulting JSP is loaded via an internal container request. The output of that request is sent back to the browser in the 'data' payload of the RPCResponse.
Parameters:
javaCode - Arbitrary JSP content, java sections must be enclosed in standard Java escape tags (<% %>).
Returns:
'data' payload of RPCResponse contains the result of executing the specified code via the JSP parser. If an error occurs, status is set to STATUS_FAILURE and 'data' contains the error string.

loadSharedXML

public static RPCResponse loadSharedXML(java.lang.String type,
                                        java.lang.String ID)
                                 throws java.lang.Exception
Load a DS, UI, or APP file from the standard search path. Returns the source XML and translated JS by default.

This method is used by the Visual Builder tool.

Parameters:
type - UI or DS or APP
ID - the ID of the file to load
Returns:
The 'data' payload of the RPCResponse contains a Map that contains the 'type' as passed in, the 'ID' as passed in, 'xml' with the XML version of the file, 'js' with the JS version of the file (as translated from XML). If an error occurs, the Map contains an 'error' property that contains the error string.

saveSharedXML

public static RPCResponse saveSharedXML(java.lang.String type,
                                        java.lang.String ID,
                                        java.lang.String contents)
                                 throws java.lang.Exception
Writes or overwrites a UI, DS or APP file with the provided contents. Locate of the file is based on the file type - these directories are controlled by the server.properties attributes project.(datasources|apps|ui)

This method is used by the Visual Builder tool.

Parameters:
type - UI or DS or APP
ID - Specifies the base filename, .ui.xml or .ds.xml or .app.xml is automatically appended, based on the type.
contents - The contents of the file.
Returns:
The 'data' payload of the RPCResponse contains a Map with the 'type' and 'ID' properties as passed in. If an error occurs, the Map contains an 'error' property that contains the error string.

getLogNames

public static java.util.List getLogNames()
                                  throws java.lang.Exception
Returns the list of available log4j log names.

This method is used by the Server Logs tab of the Developer Console.

Returns:
The list of available log names.

getLogEntries

public static java.util.List getLogEntries(java.lang.String logName)
                                    throws java.lang.Exception
Returns the contents of the specified log4j log.

This method is used by the Server Logs tab of the Developer Console.

Parameters:
logName - The name of the log.
Returns:
The contenst of the specified log4j.log.