com.smartgwt.client.data

## Class WebService

- java.lang.Object
- - com.smartgwt.client.core.BaseClass
  - - com.smartgwt.client.data.WebService

-     public class WebService
      extends BaseClass

  Class representing a WebService definition derived from a WSDL file.

  A Web Service object allows you to invoke operations (via `callOperation()`), inspect schema declared in the WSDL file (`getSchema()`), and perform simple read-only databinding `getFetchDS()`.

  Once a WebService has been loaded, a DataSource can be declared with a `serviceNamespace` to connect it to the web service, allowing DataSource data to be loaded and saved to the web service using `operationBindings`.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected JavaScriptObject` | `jsObj`

    - ### Fields inherited from class com.smartgwt.client.core.BaseClass

      `config, factoryCreated, factoryProperties, id, scClassName`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WebService()`
    `WebService(JavaScriptObject jsObj)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `callOperation(java.lang.String operationName, java.util.Map paramData, java.lang.String resultType, WebServiceCallback callback)` Invoke a web service operation.
    `void` | `callOperation(java.lang.String operationName, java.util.Map paramData, java.lang.String resultType, WebServiceCallback callback, WSRequest wsRequestProperties)` Invoke a web service operation.
    `JavaScriptObject` | `create()`
    `static WebService` | `get(java.lang.String serviceNamespace)` Retrieve a WebService object by the targetNamespace declared on the element in the WSDL file from which the WebService was derived.
    `DataSource` | `getFetchDS(java.lang.String operationName, java.lang.String resultType)` Retrieve a DataSource that provides read-only access to records returned by a web service operation.
    `DataSource` | `getFetchDS(java.lang.String operationName, java.lang.String resultType, OperationBinding operationBindingProperties)` Retrieve a DataSource that provides read-only access to records returned by a web service operation.
    `DataSource` | `getInputDS(java.lang.String operationName)` Get a DataSource representing the input message to a web service operation.
    `JavaScriptObject` | `getJsObj()`
    `JavaScriptObject` | `getOrCreateJsObj()`
    `static WebService` | `getOrCreateRef(JavaScriptObject jsObj)`
    `DataSource` | `getSchema(java.lang.String schemaName)` Get the schema definition of any complexType or element of complexType defined in any blocks in the WSDL file this WebService represents.
    `DataSource` | `getSchema(java.lang.String schemaName, java.lang.String schemaType)` Get the schema definition of any complexType or element of complexType defined in any blocks in the WSDL file this WebService represents.
    `java.lang.String` | `getSoapMessage(WSRequest wsRequestProperties)` Return the SOAP message that will be formed from this WSRequest.
    `boolean` | `isCreated()`
    `void` | `setJavaScriptObject(JavaScriptObject jsObj)`
    `void` | `setLocation(java.lang.String url)` Set location can be used when the actual URL where a service will be accessible isn't known until runtime, or changes at runtime, hence can't be embedded in the service definition.
    `void` | `setLocation(java.lang.String url, java.lang.String operation)` Set location can be used when the actual URL where a service will be accessible isn't known until runtime, or changes at runtime, hence can't be embedded in the service definition.

    - ### Methods inherited from class com.smartgwt.client.core.BaseClass

      `applyFactoryProperties, asSGWTComponent, createJsObj, destroy, doAddHandler, doInit, error, error, errorIfNotCreated, fireEvent, getAttribute, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDouble, getAttributeAsElement, getAttributeAsFloat, getAttributeAsInt, getAttributeAsJavaScriptObject, getAttributeAsMap, getAttributeAsString, getAttributeAsStringArray, getClassName, getConfig, getHandlerCount, getID, getRef, getScClassName, getTestInstance, hasAutoAssignedID, internalSetID, internalSetID, isFactoryCreated, onBind, onInit, registerID, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setConfig, setFactoryCreated, setID, setProperty, setProperty, setProperty, setProperty, setScClassName`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### jsObj

          protected JavaScriptObject jsObj

  - ### Constructor Detail

    - #### WebService

          public WebService()

    - #### WebService

          public WebService(JavaScriptObject jsObj)

  - ### Method Detail

    - #### getOrCreateRef

          public static WebService getOrCreateRef(JavaScriptObject jsObj)

    - #### getJsObj

          public JavaScriptObject getJsObj()

      Overrides:
        `getJsObj` in class `BaseClass`

    - #### isCreated

          public boolean isCreated()

      Overrides:
        `isCreated` in class `BaseClass`

    - #### getOrCreateJsObj

          public JavaScriptObject getOrCreateJsObj()

      Overrides:
        `getOrCreateJsObj` in class `BaseClass`

    - #### setJavaScriptObject

          public void setJavaScriptObject(JavaScriptObject jsObj)

      Overrides:
        `setJavaScriptObject` in class `BaseClass`

    - #### create

          public JavaScriptObject create()

      Specified by:
        `create` in class `BaseClass`

    - #### callOperation

          public void callOperation(java.lang.String operationName,
                           java.util.Map paramData,
                           java.lang.String resultType,
                           WebServiceCallback callback)

      Invoke a web service operation.

      The `data` parameter will be serialized to XML to form the input message for
      the operation, as described by ${isc.DocUtils.linkForRef('method:DataSource.xmlSerialize')}. Namespacing,
      element ordering, and SOAP encoding rules are automatically followed. If the web
      service you are trying to contact requires a complicated nested structure, consider
      using `WSRequest.setUseFlatFields(Boolean)` to simplify the required JavaScript input data.

      The `resultType` selects what part of the message should be decoded to
      JavaScript and made available as the "data" variable in the callback. The
      `resultType` parameter can be either:

      - an XPath. "data" will be always be an Array, containing the selected elements as
        decoded by XMLTools.toJS. All properties will have String value.
      - the name of an XML Schema type found somewhere in the response. You can use the
        WSDL tab of the Developer Console to analyze the WSDL file for an appropriate type name.
        "data" will be an Array, containing the decoded elements as decoded by
        `DataSource.recordsFromXML(Object)` . In this case, since the XML Schema type of the
        selected data is known, properties will have correct type (eg "date" fields will
        have JavaScript Date objects)
      - null. "data" will an Object representing the entire &lt;SOAP:Body&gt; as decoded
        to JavaScript. As above, properties will have correct type.
      In the callback, you also receive the XML document returned by the web service as
      "xmlDoc".

      NOTE: `callOperation()` is appropriate for simple operations that do not
      involve DataBound Components, such as logging into a web service, or retrieving simple
      String data. `callOperation()` can also be used to retrieve small, read-only
      datasets such as the option list for a SelectItem, but only if the dataset is guaranteed
      to remain small enough for paging to be unnecessary. For any larger datasets or
      anything that will be edited, DataSource integration is more appropriate.

      Parameters:
        `operationName` - Name of the operation to invoke
        `paramData` - data to serialize as XML to form the inbound message of the operation
        `resultType` - Type, Element name, or XPath that should be selected from the result
        `callback` - Callback to invoke on completion

    - #### callOperation

          public void callOperation(java.lang.String operationName,
                           java.util.Map paramData,
                           java.lang.String resultType,
                           WebServiceCallback callback,
                           WSRequest wsRequestProperties)

      Invoke a web service operation.

      The `data` parameter will be serialized to XML to form the input message for
      the operation, as described by ${isc.DocUtils.linkForRef('method:DataSource.xmlSerialize')}. Namespacing,
      element ordering, and SOAP encoding rules are automatically followed. If the web
      service you are trying to contact requires a complicated nested structure, consider
      using `WSRequest.setUseFlatFields(Boolean)` to simplify the required JavaScript input data.

      The `resultType` selects what part of the message should be decoded to
      JavaScript and made available as the "data" variable in the callback. The
      `resultType` parameter can be either:

      - an XPath. "data" will be always be an Array, containing the selected elements as
        decoded by XMLTools.toJS. All properties will have String value.
      - the name of an XML Schema type found somewhere in the response. You can use the
        WSDL tab of the Developer Console to analyze the WSDL file for an appropriate type name.
        "data" will be an Array, containing the decoded elements as decoded by
        `DataSource.recordsFromXML(Object)` . In this case, since the XML Schema type of the
        selected data is known, properties will have correct type (eg "date" fields will
        have JavaScript Date objects)
      - null. "data" will an Object representing the entire &lt;SOAP:Body&gt; as decoded
        to JavaScript. As above, properties will have correct type.
      In the callback, you also receive the XML document returned by the web service as
      "xmlDoc".

      NOTE: `callOperation()` is appropriate for simple operations that do not
      involve DataBound Components, such as logging into a web service, or retrieving simple
      String data. `callOperation()` can also be used to retrieve small, read-only
      datasets such as the option list for a SelectItem, but only if the dataset is guaranteed
      to remain small enough for paging to be unnecessary. For any larger datasets or
      anything that will be edited, DataSource integration is more appropriate.

      Parameters:
        `operationName` - Name of the operation to invoke
        `paramData` - data to serialize as XML to form the inbound message of the operation
        `resultType` - Type, Element name, or XPath that should be selected from the result
        `callback` - Callback to invoke on completion
        `wsRequestProperties` - Additional properties for the WSRequest, such as HTTPHeaders

    - #### setLocation

          public void setLocation(java.lang.String url)

      Set location can be used when the actual URL where a service will be accessible isn't known until runtime, or changes at runtime, hence can't be embedded in the service definition.
      With an operation parameter, setLocation() can be used to set a distinct URL for each web service operation. This is a development-time only feature that allows XML flat files to be placed at various URLs on a server, to serve as spoofed responses for each web service operation.
      Parameters:
        `url` - the URL where web service can be contacted

    - #### setLocation

          public void setLocation(java.lang.String url,
                         java.lang.String operation)

      Set location can be used when the actual URL where a service will be accessible isn't known until runtime, or changes at runtime, hence can't be embedded in the service definition.
      With an operation parameter, setLocation() can be used to set a distinct URL for each web service operation. This is a development-time only feature that allows XML flat files to be placed at various URLs on a server, to serve as spoofed responses for each web service operation.
      Parameters:
        `url` - the URL where web service can be contacted
        `operation` - optional operation name to set the location for, for debugging only

    - #### getInputDS

          public DataSource getInputDS(java.lang.String operationName)

      Get a DataSource representing the input message to a web service operation. This DataSource is suitable for use as form.dataSource for a form that the user fills out when providing inputs to call this web service operation.
      Parameters:
        `operationName` - name of the web service operation whose inputs the returned DataSource will represent
      Returns:
        DataSource representing the input message of a web service operation

    - #### getFetchDS

          public DataSource getFetchDS(java.lang.String operationName,
                              java.lang.String resultType)

      Retrieve a DataSource that provides read-only access to records returned by a web service operation.
      DataBound Components can be bound to the returned DataSource, and the fetchData() method can be invoked to retrieve data from the web service.
      The returned DataSource is only capable of the "fetch" DataSource operation, not "update", "add" or "remove". To create a DataSource capable of full read-write access, use DataSource.operationBindings with the wsOperation property set to associate each DataSource operation with a web service operation.
      Parameters:
        `operationName` - name of the web service operation to invoke to fetch records
        `resultType` - tag or type name of the XML element to be returned as DataSource records
      Returns:
        dDataSource representing the fetch message of a web service operation

    - #### getFetchDS

          public DataSource getFetchDS(java.lang.String operationName,
                              java.lang.String resultType,
                              OperationBinding operationBindingProperties)

      Retrieve a DataSource that provides read-only access to records returned by a web service operation.
      DataBound Components can be bound to the returned DataSource, and the fetchData() method can be invoked to retrieve data from the web service.
      The returned DataSource is only capable of the "fetch" DataSource operation, not "update", "add" or "remove". To create a DataSource capable of full read-write access, use DataSource.operationBindings with the wsOperation property set to associate each DataSource operation with a web service operation.
      Parameters:
        `operationName` - name of the web service operation to invoke to fetch records
        `resultType` - tag or type name of the XML element to be returned as DataSource records
        `operationBindingProperties` - additional properties for the operationType:"fetch" operationBinding which this method automatically creates. This can be used to set properties such as `com.smartgwt.client.data.OperationBinding#setUseFlatFields(Boolean)` or `OperationBinding.setRecordXPath(String)`
      Returns:
        dDataSource representing the fetch message of a web service operation

    - #### getSchema

          public DataSource getSchema(java.lang.String schemaName)

      Get the schema definition of any complexType or element of complexType defined in any blocks in the WSDL file this WebService represents.
      Parameters:
        `schemaName` - name of type or element
      Returns:
        requested schema

    - #### getSchema

          public DataSource getSchema(java.lang.String schemaName,
                             java.lang.String schemaType)

      Get the schema definition of any complexType or element of complexType defined in any blocks in the WSDL file this WebService represents.
      Parameters:
        `schemaName` - name of type or element
        `schemaType` - optional type of schema to return, either "element" for xs:element definitions only or "type" for xs:complexType definitions. If unspecified, either will be returned, with types preferred if names collide
      Returns:
        requested schema

    - #### get

          public static WebService get(java.lang.String serviceNamespace)

      Retrieve a WebService object by the targetNamespace declared on the element in the WSDL file from which the WebService was derived.
      Parameters:
        `serviceNamespace` - uri from the "targetNamespace" attribute of the element in the WSDL file
      Returns:
        the requested WebService, or null if not loaded

    - #### getSoapMessage

          public java.lang.String getSoapMessage(WSRequest wsRequestProperties)

      Return the SOAP message that will be formed from this WSRequest.
      Parameters:
        `web` - service request object
      Returns:
        SOAP message