public class OperationBinding
extends java.lang.Object
 This class is not meant to be created and used, it is actually documentation of settings
 allowed in a DataSource descriptor (.ds.xml file), for use with Smart GWT Pro Edition and
 above.
 See com.smartgwt.client.docs.serverds for how to use this documentation.
 
| Modifier and Type | Field and Description | 
|---|---|
| java.lang.Boolean | allowAdvancedCriteriaThis property indicates whether this operation supports AdvancedCriteria. | 
| java.lang.Boolean | allowMultiUpdateOrdinarily, "update" and "remove" operations are only allowed for  DataSources that have aprimaryKey, and all primary key
 values are present in the request. | 
| VelocityExpression | ansiJoinClauseThis feature is available with Power or better licenses only. See smartclient.com/product for details. | 
| java.lang.Boolean | autoJoinTransactionsIf true, causes requests against this operation to automatically start or join a transaction. | 
| java.lang.String | beanClassNameA per-operationBinding setting for beanClassName, otherwise also settable at the top-level
 DataSource configuration. | 
| java.lang.String | cacheSyncOperationFor an operationBinding of  operationType"add" or
 "update", this  property is theoperationIdof a "fetch"
 operationBinding to use  for cache synchronization purposes (ie, to fetch the row most recently
 added or changed). | 
| java.lang.String | callbackParamApplies only to dataFormat: "json". | 
| java.lang.Boolean | canSyncCacheFor an operation of type "add" or "update", a SQLDataSource will normally obtain data to return
 to the client by performing the "cacheSyncOperation": a SELECT statement that retrieves the
 modified record by primary key. | 
| java.lang.Boolean | creatorOverridesIndicates that field-level declarative security rules are waived for rows that were  created by
 the current user, as described in the discussion of   dataSource.creatorOverrides. | 
| DSRequestModifier[] | criteriaElements of this feature are only available with Power or better licenses. See 
  smartclient.com/product for details. | 
| java.lang.String | customCriteriaFieldsIndicates that the listed fields should be included in the default  whereClausegenerated for this
 operationBinding, even if they are markedcustomSQL="true". | 
| java.lang.String | customFieldsIndicates that the listed fields should be included in the default  selectClauseandwhereClausegenerated for this 
 operationBinding, even if they are markedcustomSQL="true". | 
| java.lang.String | customHQLThis feature is available with Power or better licenses only. See  smartclient.com/product for details. | 
| java.lang.String | customJQLThis feature is available with Power or better licenses only. See smartclient.com/product for details. | 
| java.lang.String | customSQLThis feature is available with Power or better licenses only. See  smartclient.com/product for details. | 
| java.lang.String | customValueFieldsIndicates that the listed fields should be included in the default  selectClauseandvaluesClausegenerated for
 this operationBinding, even if they are markedcustomSQL="true". | 
| DSProtocol | dataProtocolControls the format in which inputs are sent to the dataURL. | 
| java.lang.String | dataURLURL to contact to fulfill DSRequests for this operationBinding. | 
| java.util.Map | defaultParamsHTTP parameters that should be submitted with every DSRequest. | 
| java.lang.String | excludeCriteriaFieldsIndicates that the listed fields should be excluded from the default  whereClausegenerated for this
 operationBinding. | 
| ExportFormat | exportAsThe format in which the data should be exported. | 
| java.lang.String[] | exportFieldsThe list of field-names to export. | 
| java.lang.String | exportFilenameThe name of the file to save the exported data into. | 
| boolean | exportResultsWhen set, causes the results of the DataSource Operation to be exported to a file, whose 
 name and format are indicated by  exportFilenameandexportAsrespectively. | 
| java.lang.String[] | groupByList of fields to group by when using  server-side summarization. | 
| java.lang.String | groupClauseThis feature is available with Power or better licenses only. See  smartclient.com/product for details. | 
| java.lang.String | guestUserIdValue to use for the  ownerIdFieldif no one  has authenticated. | 
| java.lang.Boolean | includeAnsiJoinsInTableClauseThis setting makes difference if  ANSI-style joinsare in use. | 
| java.lang.Boolean | invalidateCacheIf set, every invocation of this operationBinding will invalidate the local cache, forcing a
 server visit to refresh the data. | 
| java.lang.String | lineBreakStyleThe style of line-breaks to use in the exported output. | 
| Mail | mailDefinition of an email message that will be sent as an after-effect of selecting or updating
 data. | 
| java.lang.String | methodArgumentsYou can explicitly declare the arguments to be passed to  serverMethodusing this
 attribute. | 
| java.lang.String | namedQueryThis feature is available with Power or better licenses only. See
  smartclient.com/product for details. | 
| java.lang.String | operationIdOptional operationId if this DataSource supports two or more variants of one of the basic
 DataSource operations, for instance, a "fetch" that uses full text search and a "fetch" that
 accepts per-field search criteria. | 
| DSOperationType | operationTypeWhich operationType this operationBinding is for. | 
| java.lang.String | orderClauseThis feature is available with Power or better licenses only. See  smartclient.com/product for details. | 
| java.lang.String | outputsSpecifies, for this operationBinding only, the list of field names that should be returned to
 the client. | 
| java.lang.String | ownerIdFieldRequires that the currently authenticated user match the contents of this field, for
 client-initiated requests (i.e., where  DSRequest.isClientRequest()returns true on
 the server). | 
| java.lang.Boolean | preventHTTPCachingConfigures  DataSource.preventHTTPCachingon a per-operationType basis. | 
| java.lang.Boolean | progressiveLoadingSets  progressive loading
 modefor this particular  operation, overriding the DataSource-level setting. | 
| java.lang.Boolean | providesMissingKeysOrdinarily, "update" and "remove" operations are only allowed if all primary key values are
 present in the request. | 
| boolean | qualifyColumnNamesSpecifies, for this specific operationBinding, whether to qualify column names with table names
 in any SQL we generate. | 
| java.lang.String | recordNameFor an XML DataSource, tagName of the elements to be used as records. | 
| XPathExpression | recordXPathFor an XML or JSON DataSource, XPath expression used to retrieve the objects that will become
 DataSource records. | 
| DSRequest | requestPropertiesAdditional properties to pass through to the  DSRequestcreated
 for this operation. | 
| VelocityExpression | requiresIndicates that the specified  VelocityExpressionmust be true
 for a user to access this operationBinding. | 
| java.lang.Boolean | requiresAuthenticationWhether a user must be authenticated in order to access this operation. | 
| java.lang.String | requiresRoleComma-separated list of user roles that are allowed to invoke the operation described by
  this operationBinding. | 
| DataSource | responseDataSchemaOptional schema describing how to extract DataSource records from the XML elements selected. | 
| java.lang.String | scriptScriptlet to be executed prior to the DataSource operation which is configured by this
  operationBinding. | 
| java.lang.String | selectClauseThis feature is available with Power or better licenses only. See  smartclient.com/product for details. | 
| java.lang.String | serverMethodThe name of the method to invoke on the  ServerObjectfor this operationBinding. | 
| ServerObject | serverObjectOptional ServerObject declaration that specifies the ServerObject configuration for this
 operationBinding. | 
| java.lang.Boolean | skipAudit | 
| java.lang.Boolean | skipRowCountA SQLDataSource will normally issue two queries for a "fetch" operation when paging is enabled:
 one to determine the total rows available (the "row count query"), and one to fetch the
 specific range of rows requested. | 
| boolean | spoofResponsesFor a DataSource contacting a  WSDL web service, setting this
 flag means the DataSource doesn't actually attempt to contact the server but generates a sample
 response instead, based on the XML Schema of the response message embedded in the WSDL. | 
| SQLPagingStrategy | sqlPagingThe paging strategy to use for this specific OperationBinding. | 
| SQLType | sqlTypeFor dataSources of  serverType"sql" and "hibernate" only, this  property determines whether "custom" operations have their
 custom SQL or HQL sent to the   underlying database via a JDBCexecuteQuery()or a
 JDBCexecuteUpdate(). | 
| java.lang.Boolean | sqlUsePagingHintIf explicitly set true or false, forces the use of a "hint" in the SQL we generate for paged 
 queries on or off as appropriate. | 
| java.util.Map | summaryFunctionsA mapping from field names to  summary
 functionsto be applied to each field. | 
| java.lang.String | tableClauseThis feature is available with Power or better licenses only. See  smartclient.com/product for details. | 
| java.lang.Boolean | transformMultipleFieldsIf set to "false", transformation of values for  multiple:truefields, normally
 controlled byDataSourceField.multipleStorage, is instead disabled for this OperationBinding. | 
| boolean | useFlatFieldsSetting  useFlatFieldson an operationBinding is equivalent to settingDSRequest.useFlatFieldson all DataSource
 requests with the sameoperationTypeas thisoperationBinding. | 
| boolean | useForCacheSyncFor an operationBinding of  operationType"fetch" which
 specifies nooperationId, this property determines whether the operationBinding  should be used for cache
 synchronization purposes (ie, to retrieve the record most recently added or changed). | 
| java.lang.Boolean | useSpringTransactionSets or clears the  useSpringTransactionflag for this specific operation. | 
| java.lang.Boolean | useSubselectForRowCountWhether to use the subselect technique (see  DataSource.useSubselectForRowCountfor details) to derive a rowcount query for this operation. | 
| DSRequestModifier[] | valuesElements of this feature are only available with Power or better licenses. See  smartclient.com/product for details. | 
| java.lang.String | valuesClauseThis feature is available with Power or better licenses only. See  smartclient.com/product for details. | 
| java.lang.String | whereClauseThis feature is available with Power or better licenses only. See  smartclient.com/product for details. | 
| java.util.Map | xmlNamespacesOptional object declaring namespace prefixes for use in  recordXPathandDataSourceField.valueXPathXPath expressions. | 
| Constructor and Description | 
|---|
| OperationBinding() | 
public java.lang.Boolean invalidateCache
Default value is null
public java.lang.String cacheSyncOperation
operationType "add" or
 "update", this  property is the operationId of a "fetch"
 operationBinding to use  for cache synchronization purposes (ie, to fetch the row most recently
 added or changed). This property, along with useForCacheSync and  canSyncCache is provided so
 that you can use custom database operations without sacrificing the benefits of Smart GWT's
 automatic cache synchronization. This property is only applicable to DataSources of type "sql".
Default value is null
public java.lang.String requiresRole
authentication.superuserRole can be 
 specified in the server.properties file. If
 set this denotes a "super user" 
  role - any user with that role will have access to all operations, regardless of the
  "requiresRole" settings for the operation.
  
  Whether the current user has a given role is determined by calling the standard Java
  servlets method httpServletRequest.isUserInRole(), hence works with both simple
  J2EE security (realms and form-based authentication) and JAAS (Java Authentication &
  Authorization Service).
  
  If you wish to use a role-based security scheme that does not make use of the servlet API's 
  standards, Smart GWT Server also implements the setAuthenticated and
  setUserRoles methods on RPCManager. 
  You can use this API to tell Smart GWT that all the requests in the queue currently 
  being processed are associated with a user who has the roles you supply; in this case,
  Smart GWT will not attempt to resolve the user's roles via 
  httpServletRequest.isUserInRole(). When taking this approach, the 
  rpcManager.setUserRoles() method should be called on the server for 
  each transaction received from the client. We recommend doing this by overriding the 
  special IDACall servlet and checking server side state to determine the current user's 
  roles, calling the API, and then calling handleDSRequest() or
  handleRPCRequest() directly to handle the request(s) passed in.
  Here's an example of this approach which assumes the current user's roles has been
  set directly on the HttpSession object as a comma-separated-string attribute "roles":
  
   public class SecureIDACall extends IDACall {
   
       public void processRequest(HttpServletRequest request,
               HttpServletResponse response)
        throws ServletException, IOException
       {
           HttpSession session = request.getSession();
           Object roles = session == null ? null : session.getAttribute("roles");
  
           if (roles != null) {
               try {
                   RequestContext context = RequestContext.instance(this, request, response);   
                   RPCManager rpc = new RPCManager(request, response);
                   rpc.setAuthenticated(true);
                   rpc.setUserRoles((String) roles); 
                   
                   // call processRPCTransaction() to iterate through all RPCRequests and
                   // DSRequests and execute them
                   processRPCTransaction(rpc, context);
  
               } catch (Throwable e) {
                   handleError(response, e);
               }
           } else {
               super.processRequest(request, response);
           } 
       }
   }
  
  If there is an operationBinding declared for a given operationType which does not have an
 operationId, that is, it
 is the default operationBinding for the type, then any other
  operationBinding of the same type is assumed to have the same setting for
  requiresRole as the default operationBinding for the operationType.  For
  example, given these declarations:
  
      <operationBinding operationType="fetch" requiresRole="manager">
            ... settings ...
       </operationBinding>
      <operationBinding operationType="fetch" operationId="fetchWithExtraFields">
            ... settings ...
       </operationBinding>
  
  The second operationBinding requires the "manager" role even though there is no explicit
  requiresRole declaration.  To prevent the "manager" role being required by the
  second operationBinding, add requireRole="".
  
 Note that if DataSource.requiresRole is set, all operations on the DataSource require
  the roles set for the DataSource as a whole, even if they declare individual
  requiresRole attributes.
  
This property is valid only for a server-side DataSource when using the Smart GWT Server.
After successfull "add" or "update" operation cache sync request is performed, which is using "fetch" operation of the same datasource. It may happen that user is allowed to add records, but is not allowed to fetch them, for example:
      <operationBinding operationType="fetch" requiresRole="admin">
            ... settings ...
      </operationBinding>
      <operationBinding operationType="add">
            ... settings ...
      </operationBinding>
  
 User without "admin" role will be able to successfully add record, but the cache sync operation
 
 will fail due to security violation. In this case the record will be saved to database, but the
 
 added record will not be fetched from database, instead just old values 
 overlaid with submitted values will be returned. So, any changes made to the new record during 
 request execution, including generated values for primary key fields of "sequence" type, will
 not 
  be returned to the client.
  
 However, if "add" or "update" operation explicitly declares cacheSyncOperation,
 cache sync request will be executed even if the user does not meet the security checks for the 
 operationBinding. Note that field-level security still will be respected and disallowed fields
 will 
  be excluded from returned data.
 
Default value is null
public java.lang.String recordName
 This is a simple
 alternative to recordXPath when the elements to be used as records all share a tagName. 
 When a DataSource
 has a WebService, recordName can also be set to the name of any
 complexType declared within the WebService's WSDL file.
 
Default value is null
public java.lang.String exportFilename
Default value is null
public boolean useFlatFields
useFlatFields on an operationBinding is equivalent to setting DSRequest.useFlatFields on all DataSource
 requests with the same operationType as this operationBinding.  Typical usage is to combine
 operationBinding.useFlatFields with  searchForm.useFlatFields, with
 the SearchForm bound to the input message of the web service operation set
 as wsOperation.  This allows
 gratuitous nesting to be consistently bypassed in both the user presentation and in the actual
 XML messaging. 
 Note that useFlatFields is not generally recommended for use
 with input messages where multiple simple type fields exist with the same name, however if used
 in this way, the first field to use a given name wins.  "first" means the first field
 encountered in a depth first search.  "wins" means only the first field will be available in
 data binding, and only the first field will be populated in the generated XML message.
 
Default value is false
public java.lang.String outputs
DataSource.fields, but note  that this is
 not a requirement; outputs can include fields that are not defined in the
 DataSource's field list.  In this case, the server will return extra fields even if  DataSource.dropExtraFields is
 true. You specify this property as a string containing a comma-separated list of field names (eg, "foo, bar, baz")
Default value is null
public java.lang.Boolean preventHTTPCaching
DataSource.preventHTTPCaching on a per-operationType basis.
 Default value is null
public VelocityExpression ansiJoinClause
 For a
 dataSource of serverType "sql",
 this property can be specified on an operationBinding to provide the server with a bespoke
 ANSI-style joins clause to use when constructing the SQL query to perform this operation. The
 property should be a set of joins implemented with JOIN directives (as opposed to additional
 join expressions in the where clause), joining related tables to the main table or view defined
 in tableClause. The
 server will insert the text of this property immediately after the tableClause. 
 See the
 documentation for customSQL for usage examples
 
Default value is null
public java.lang.Boolean canSyncCache
 Certain major SQL customizations can prevent the SQLDataSource from authoritatively
 determining the primary key used in the SQL statement, such that re-selecting the saved record
 may fail.  By default, when canSyncCache has not been explicitly set, in the
 following cases it is assumed that the normal cacheSyncOperation cannot be used: 
canSyncCache has been set false, the server will skip the cacheSyncOperation
 and return a DSResponse where DSResponse.invalidateCache has been set to true to notify client-side components that they may
 need to refresh their entire cache.  Alternatively, if the default re-selection behavior
 will not work but a customized SQL query would work, you can define that SQL operation as
 another operationBinding and use cacheSyncOperation to
 declare that it should be used.  Setting cacheSyncOperation implicitly sets
 canCacheSync to true. 
This property is only applicable to DataSources of type "sql".
Default value is null
public boolean qualifyColumnNames
DataSource.qualifyColumnNames
 property. Only applicable to dataSources of serverType "sql".
 Default value is true
public java.lang.String script
script specified at the DataSource
 level
  for this operation.
  
 Scriptlets are used similarly to DMIs configured via serverObject -
  they can add business logic by modifying the DSRequest before it's executed, modifying the
  default DSResponse, or taking other, unrelated actions.  
  
 Scriptlets are used similarly to DMIs configured via DataSource.serverObject or
  serverObject -
  they can add business logic by modifying the DSRequest before it's executed, modifying the
  default DSResponse, or taking other, unrelated actions.  
  
For example:
     <operationBindings>
        <operationBinding operationType="add">
            <script language="groovy">
               ... Groovy code ...
            </script>
        </operationBinding>
     </operationBindings>
  
  
  Scriptlets can be written in any language supported by the "JSR 223" standard, including Java
 itself.  See the DMI Script Overview for rules on
 how to return data,
  add additional imports, and other settings.
  
The following variables are available for DMI scriptlets:
automatic
 transactions are enabled, this
  SQLConnection is in the context of the current transaction.
  Scriptlets also have access to a set of contextual variables related to the Servlets API, as follows:
HttpSession
  prevents your DataSource from being used in a command-line process.
  
  Note that if a dataSource configuration has both a <script> block and
 a specified serverObject for some operation, the
  script block will be executed, and the serverObject ignored.
 
Default value is null
public java.lang.Boolean autoJoinTransactions
DataSource.autoJoinTransactions.  See DataSource.autoJoinTransactions for further details of Smart GWT's automatic transaction
 control.
 
Default value is null
public java.lang.String customValueFields
selectClause and valuesClause generated for
 this operationBinding, even if they are marked customSQL="true". You can specify this property as a comma-separated list (eg, "foo, bar, baz") or by just repeating the <customValueFields> tag multiple times with one field each.
 This property is only
 applicable to DataSources of "sql".
 
Default value is null
public java.lang.Boolean progressiveLoading
progressive loading
 mode for this particular  operation, overriding the DataSource-level setting.  Note that this
 setting applies only to fetch operations - it has no effect if specified on any other kind of
 operation.
 Default value is null
public java.lang.Boolean useSpringTransaction
useSpringTransaction flag for this specific operation.  See
 DataSource.useSpringTransaction for details of the Spring transaction integration feature
 
Default value is null
public java.lang.String[] groupBy
server-side summarization.  Valid only for an operation of type "fetch".  See the  Server Summaries overview for details and examples of
 usage.
 
Default value is null
public java.lang.String lineBreakStyle
LineBreakStyle for more information.
 Default value is null
public java.lang.String valuesClause
 For a
 dataSource of serverType "sql",
 this  property can be specified on an operationBinding to provide the server with a bespoke set
 of values to add or update,  for use when constructing the SQL query to perform this 
 operation.  The property should be one of the following, depending on the  operationType: 
For "add" operations, the syntax that would be valid for an INSERT INTO query: a comma-separated list of column names enclosed in parentheses, followed by a comma-separated list of new values, enclosed in parentheses and preceded by the token "VALUES". For example:
 <valuesClause>(name, age) VALUES("Jane Doe", 48)</valuesClause> 
For "update" operations, the syntax that would be valid for an UPDATE query: a comma-separated list of expressions equating a column name to its new value. For example:
 <valuesClause>name="Jane Doe", age=48</valuesClause> 
You may find the Smart GWT-provided $values variable of particular use with this property.
 See
 the documentation for customSQL for usage examples
 
Default value is null
public Mail mail
 Note that if a fixed number of different messages need to be sent, multiple 
 <mail> tags may be specified.  For example, one mail could be sent to an 
 admin address, and a different message to every member of a user group.
 
Default value is null
public DSProtocol dataProtocol
 When a DataSource operation
 such as fetchData() is invoked on this DataSource or a component bound to this DataSource, the
 data passed to the operation, if any, will be sent to the dataURL.  The
 dataProtocol property controls the format in which the data is sent: SOAP message,
 HTTP GET or POST of parameters, etc. 
 The dataProtocol property need not be set
 for a DataSource with a WebService ( DataSource.serviceNamespace is
 set), in this case, SOAP messaging is used by default. 
 Developers may completely bypass the
 Smart GWT comm system by setting dataProtocol to "clientCustom". In this case
 Smart GWT will not attempt to send any data to the server after calling DataSource.transformRequest(). Instead
 the developer is expected to implement transformRequest() such that it performs
 the necessary data action outside of Smart GWT, and then calls DataSource.processResponse(),  passing in
 the DSRequest.requestId and an
 appropriate set of DSResponse properties to indicate the result of the action. 
 NOTE: when
 dataFormat is "iscServer",
 dataProtocol is not consulted. Instead, Smart GWT uses a proprietary wire format
 to communicate with the Smart GWT server, and the server-side DSRequest and DSResponse objects
 should be used to access request data and form responses.
 
Default value is "getParams"
public java.lang.Boolean skipRowCount
 Setting skipRowCount="true" will avoid the "row count
 query", but as a consequence DSResponse.totalRows will be set to match the requested DSRequest.endRow since the totalRows is unknown. 
 You can avoid this by using a  paging strategy of "jdbcScroll"
 or "dropAtServer", but be  aware that these paging strategies can introduce significant delays
 when used with  potentially large datasets (in fact, "dropAtServer" is almost guaranteed to do
 so if used with datasets of more than 1000 or so rows) 
 As an alternative, consider enabling
 progressive loading,
 which avoids doing a query for row counts, but will still allow the user to load more results
 using the scrollbar if viewing results in a ListGrid.
 
Default value is null
public java.lang.String whereClause
 For a
 dataSource of serverType "sql",
 this  property can be specified on an operationBinding to provide the server with a bespoke
 WHERE clause to use when constructing the SQL query to perform this operation.  The property
 should be a valid expression in the syntax of the underlying database.  The  server will insert
 the text of this property immediately after the "WHERE" token. 
You may find the Smart GWT-provided $criteria variable of particular use with this property.
 See the
 documentation for customSQL for usage examples
 
Default value is null
public DSOperationType operationType
Default value is null
public java.lang.String orderClause
 For a
 dataSource of serverType "sql",
 this  property can be specified on an operationBinding to provide the server with a bespoke
 ORDER BY clause to use when constructing the SQL query to perform this operation.  The property
 should be a comma-separated list of column names and/or expressions, forming a valid ORDER BY
 clause in the syntax of the underlying database.  The server will  insert the text of this
 property immediately after the "ORDER BY" token. 
 This property is only applicable to
 operationBindings of  operationType "fetch". 
 See the documentation for customSQL for usage examples
 
Default value is null
public java.lang.Boolean requiresAuthentication
DataSource.requiresAuthentication.  To protect access to an entire operationType (eg, all
 "fetch" operations), declare an operationBinding with
 requiresAuthentication="true", operationType set to the
 operationType to be protected, but no operationId.  This will then
 prevent access to the "fetch" operationType unless another OperationBinding declares requiresAuthentication="false"
 with a specific operationId.
 
Default value is null
public java.lang.Boolean useSubselectForRowCount
DataSource.useSubselectForRowCount for details) to derive a rowcount query for this operation.
 If this property is not set, we fall back to the useSubselectForRowCount setting
 on the DataSource,  and the defaults described in the documentation for that property.
 Default value is null
DataSource.useSubselectForRowCount, 
customSQLpublic java.lang.Boolean includeAnsiJoinsInTableClause
ANSI-style joins are in use. If
 true, causes ansi joins to be included in $defaultTableClause, otherwise ansi joins will be put into separate $defaultAnsiJoinClause.  If omitted,
 system-wide sql.includeAnsiJoinsInTableClause setting from
 server.properties will be used. If it is missing as well, false is
 the default.
 
Default value is null
DataSource.useAnsiJoins, 
ansiJoinClausepublic SQLType sqlType
serverType
 "sql" and "hibernate" only, this  property determines whether "custom" operations have their
 custom SQL or HQL sent to the   underlying database via a JDBC executeQuery() or a
 JDBC  executeUpdate().  The default value of null means the same as "query", so
 you only need to use this property when your custom SQL or HQL updates data.
 Default value is null
public java.lang.String customHQL
 For a
 dataSource of serverType
 "hibernate", this  property can be specified on an operationBinding to indicate that the server
 should run  user-specified HQL (Hibernate Query Language), rather than the Hibernate criteria
 query or  saveOrUpdate call it would normally generate to satisfy a dataSource
 operation via Hibernate.  
 Note that inserting new records via HQL is often impractical, due
 to intentional restrictions in the language (it is only possible to perform an insert expressed
 in terms of a SELECT; the "VALUES" construct commonly used when inserting new rows singly is
 not supported).  If you are  intending to use customHQL, we recommend that you avoid doing so
 for OperationBindings  with operationType "add", unless
 you have a special  requirement such as a bulk insert; if you need custom queries to perform
 inserts  on "hibernate" dataSources, we recommend you use customSQL, which is valid for
 "hibernate" DataSources as well as "sql" dataSources. 
For other operations on "hibernate" dataSources, however, HQL has the advantage of being more portable across different database engines than is plain SQL.
Note that using customHQL affects paging implementation. If you use it, full data set is fetched from Hibernate and records that aren't in the requested range are dropped at the server side.
Default value is null
public DSRequestModifier[] criteria
 A list of DSRequestModifiers that will be used to
 modify the criteria of each 
 DSRequest that uses this operationBinding.  Note that the
 criteria elements are 
  applied to DSRequest criteria as follows:
  
operator 
  attribute is left unset, or is set to "equals".  For any other setting of 
  operator, the criteria is first converted to the equivalent AdvancedCriteria 
  and then processed as described belowBelow is an example of the XML as it should be defined in your ds.xml, datasource definitions.
  <operationBindings>
    <operationBinding operationType="fetch" operationId="...">
      <criteria fieldName="USER_ROLE" value="ADMIN" operator="equals" />
    </operationBinding>
  </operationBindings>
  Default value is null
public java.lang.Boolean transformMultipleFields
multiple:true fields, normally
 controlled by DataSourceField.multipleStorage, is instead disabled for this OperationBinding.
 Default value is null
public java.lang.Boolean skipAudit
skipAudit to true indicates that auditing  must be skipped for this
 operationBinding.  Note, that this setting can be overrided by server-side API
 DSRequest.setSkipAudit().
 
Default value is null
public java.lang.String beanClassName
Default value is null
public java.lang.String serverMethod
ServerObject
 for this operationBinding.  NOTE: If you have a DataSource-level ServerObject and
 wish to override this operation so that it simply calls a different method on the same  server
 object, it is sufficient to specify just this property on the operationBinding: there is no
 need to redefine the serverObject at the operationBinding level.
 
Default value is null
public java.lang.String callbackParam
 Typically
 set once for the DataSource as a whole via DataSource.callbackParam.
 
Default value is "callback"
public boolean exportResults
exportFilename and 
 exportAs respectively. 
 When no exportFilename is provided, the 
 default is Results and the default value of exportAs is csv.  Once the Operation 
 completes, DSRequest.exportDisplay
 specifies whether the 
  exported data will be downloaded to the file-system or displayed in a new window.   The 
  default value of exportDisplay is "download" which displays the Save As dialog.  See 
  ExportDisplay for more information.
  
 The export field-list can also be configured, see DSRequest.exportFields.
  
  You can also configure the style of line-breaks to use when generating the output.  See
  LineBreakStyle for more information.
  
 As well as setting this and other properties on the OperationBinding, Exports can be 
  initiated in two other ways.  You can set properties on the dsRequest by passing 
 requestProperties into DataSource.exportData().  Note that this method does
  not support exporting to JSON format (see 
  this post for more detail).
  Additionally, custom server code may set export-related properties on the 
  DSResponse.
  
Format Examples
XML format
      <List>
          <Object>
              <id>10101</id>
              <displayName>Record 10101</displayName>
          </Object>
     </List>
  
  JSON Format
  
      [
          { id: 10101, displayName: "Record 10101" }
      ]
  
  CSV Format
  
      id,displayName
      10101,"Record 10101"
  
 Default value is false
public java.lang.String namedQuery
 For a dataSource of serverType
 "jpa" or "hibernate", this
  property can be specified on an operationBinding to indicate that the server should execute
  a named query which has already been defined on an entity.
  
     @Entity
     @Table (name="Countries")
     @NamedQuery(name = "Country.withPopulationLessThan", query = "SELECT country FROM Country country WHERE country.population < :population")
     public class Country { ... }
  
 
  
     <operationBindings>
         <operationBinding operationType="custom" operationId="withPopulationLessThan" namedQuery="Country.withPopulationLessThan"/>
     </operationBindings>
  
  Substitution values can be used in order to build more dynamic named queries. When calling
 DataSource.performCustomOperation() the values are passed in using the data argument.
  
Note that value substitution for named queries is slightly different to other custom queries. Because of the way the persistence API works the JQL query written in the @NamedQuery annotation can only contain basic parameter names such as "population". Therefore the value substitution becomes a simple name based mapping.
     var criteria = {
         population: 596000
     };
 
     countryDataSource.performCustomOperation("withPopulationLessThan", criteria);
  
  
  Using Advanced Criteria
  
  If an advanced criteria is detected, access to all "fieldName" variables and their values will
  be provided but still using simple name based mapping. In the below case only the deep-first
  occurrence of the "population" fieldName will available. The operator is effectively ignored.
  
     var criteria = {
         _constructor: "AdvancedCriteria",
         operator:"or",
         criteria:[
             {
                 fieldName:"population",
                 operator:"lessThan",
                 value: 12000
             },
             {
                 fieldName:"name",
                 operator:"equals",
                 value: "Sweden"
             },
             {
                 _constructor: "AdvancedCriteria",
                 operator:"and",
                 criteria:[
                     {
                         fieldName:"population",
                         operator:"lessThan",
                         value: 0
                     }
                 ]
             }
         ]
     };
 
     countryDataSource.performCustomOperation("withPopulationLessThan", criteria);
  
  
  Note
  Using namedQuery affects paging implementation. If you use it, full data set is fetched
  from JPA and records that aren't in the requested range are dropped at the server side.
 
Default value is null
public ServerObject serverObject
DataSource.serverObject).  If
 neither is present, then Direct Method Invocation will not be enabled for this
 operationBinding.  Note that if a dataSource configuration has both a <script> block and a specified
 serverObject for some operation, the script block will be executed, and the
 serverObject ignored.
 
Default value is null
DataSource.serverObjectpublic java.lang.String customJQL
 For a
 dataSource of serverType "jpa",
 this property can be specified on an operationBinding to indicate that the server should run
 user-specified JQL (Java Persistence Query Language). 
 Note that inserting new records via
 JQL is often impractical, due to intentional restrictions in the language (it is only possible
 to perform an insert expressed in terms of a SELECT; the "VALUES" construct commonly used when
 inserting new rows singly is not supported).  If you are intending to use customJQL, we
 recommend that you avoid doing so for OperationBindings with operationType "add", unless
 you have a special requirement such as a bulk insert; if you need custom queries to perform
 inserts on "jpa" dataSources, we recommend you use customSQL, which is valid for
 "jpa" DataSources as well as "sql" dataSources. 
For other operations on "jpa" dataSources, however, JQL has the advantage of being more portable across different database engines than is plain SQL.
Note that using customJQL affects paging implementation. If you use it, full data set is fetched from JPA and records that aren't in the requested range are dropped at the server side.
Default value is null
public java.lang.String tableClause
 For a
 dataSource of serverType "sql",
 this  property can be specified on an operationBinding to provide the server with a bespoke
 table clause to use when constructing the SQL query to perform this operation.  The property
 should be a comma-separated list of tables and views, and you can use any special language
 constructs supported by the underlying database.  The server will  insert the text of this
 property immediately after the "FROM" token. 
 See the documentation for customSQL for usage examples
 
Default value is null
public DSRequest requestProperties
DSRequest created
 for this operation. Note that these will be cumulative with and will override on a per-property
 basis any properties set via DataSource.requestProperties.
  These properties are applied before DataSource.transformRequest() is called.
 
Default value is null
public ExportFormat exportAs
ExportFormat for more information.
 Default value is "csv"
public java.lang.String selectClause
 For a
 dataSource of serverType "sql",
 this  property can be specified on an operationBinding to provide the server with a bespoke
 SELECT clause to use when constructing the SQL query to perform this operation.  The property
 should be a comma-separated list of column names and/or expressions, and you  can refer to any
 scalar function supported by the underlying database.  The server will  insert the text of this
 property immediately after the "SELECT" token. 
 Note that if you also specify a groupClause, you can use
 aggregate  functions such as SUM and COUNT in the selectClause. 
 This property is only
 applicable to operationBindings of  operationType "fetch". 
 See the documentation for customSQL for usage examples
 
Default value is null
public java.util.Map summaryFunctions
summary
 functions to be applied to each field.  Valid only for an operation of type "fetch".  See
 the  Server Summaries overview for examples of
 usage.
 
Default value is null
public java.util.Map defaultParams
Useful for authenticated services that require a sessionId with every request.
Can be set for all operations of a given DataSource as DataSource.defaultParams.
Default value is null
public DSRequestModifier[] values
 A list of
 DSRequestModifiers that will be used to modify the
 values object of each  DSRequest that uses this
 operationBinding. See this example: Master/Detail Add Example.  
Below example of the xml as it should be
 defined in ds.xml:   <operationBinding operationType="add">   <values
 fieldName="orderID" value="$responseData.last('queuedAdd_order','add').orderID" />  
 </operationBinding>
 
Default value is null
public java.lang.String guestUserId
ownerIdField if no one  has authenticated. Overrides the same setting at the DataSource level.
 
Default value is null
ownerIdField, 
DataSource.guestUserIdpublic XPathExpression recordXPath
For example, an "ItemSearch" web service might return a "Results" structure containing metadata along with the set of Items that one might want to display in a grid. An XPath expression like "/Results/Items" could be used to retrieve just the Items, which would then become DataSource records.
 For a JSON web service, the
 recordXPath is applied to the returned JSON data via XMLTools.selectObjects().  Only limited XPath
 syntax is allowed; see  selectObjects()
 for details. 
 For processing XML results, see xmlNamespaces for information
 on the namespaces that are available in this XPath expression.  If you are contacting a WSDL
 web service, note that recordName is an alternative way to specify which records should be selected by their tagName
 or type, and this is usually simpler. 
To learn about XPath, try the following search: http://www.google.com/search?q=xpath+tutorial
Default value is null
public java.lang.String methodArguments
serverMethod using this
 attribute.  This isn't required - in the absence of methodArguments, the DMI
 implementation will still automatically pass a stock set of arguments to your method (see the
 overview in ServerObject), but specifying arguments
 gives you the ability to call pre-existing methods without adding Smart GWT-specific code. 
 The format for specifying methodArguments is as a comma separated list of VTL
 (Velocity Template Language) expressions.  See the VTL
 Reference and Velocity User Guide  for an overview of how to use VTL. 
The Velocity context is pre-populated with the following variables - you can pass these verbatim as arguments, or call methods on these objects and pass the resulting values:
 public DSResponse fetch(SupplyItem criteria,
 long startRow, long endRow) 
 You can invoke it by specifying
 methodArguments as follows: 
 methodArguments="$dsRequest.criteria,
 $dsRequest.startRow, $dsRequest.endRow" 
methodArguments, there
 would be no way for you to specify startRow/endRow as arguments.  You could, of
 course, simply declare the method to take a DSRequest object and call
 getStartRow()/getEndRow() in the body of the method.
 Default value is null
ServerObjectpublic VelocityExpression requires
VelocityExpression must be true
 for a user to access this operationBinding.  As with requiresRole, if there an
 operationBinding that is the default operationBinding for the operationType, its
 requires expression is assumed to apply to all other operationBindings of the same
 type unless they explicitly set requires="" 
 DataSource.requires, if specified,
 applies before operationBinding.requires is evaluated.  In this case, both
 requires expressions must be true for the request to be accepted.
 
Default value is null
public java.lang.Boolean allowMultiUpdate
DataSources that have a primaryKey, and all primary key
 values are present in the request.  This is because an update of a DataSource with no primary
 key,  or an update request that has missing primary key values, cannot be guaranteed to affect 
 only one record. Setting this property on an operationBinding circumvents this restriction for that operation only.
Warning: Be aware that this is a potentially dangerous setting and should be used with care. With this flag set, you have no guarantee that an update will not change or remove every row in a table.
 Also, running
 allowMultiUpdate operations directly from the client is not  straightforward
 because it requires the ability to specify criteria and values separately in the request, which
 is not currently supported.  This can be worked around in various ways, but really
 allowMultiUpdate is primarily intended for server-side  operations.  Therefore,
 the recommended pattern is to use a  custom operation from the client to
 invoke a DMI on the server which performs the multi-update operation via a second, server-side
 DSRequest.
 
Default value is null
public boolean spoofResponses
WSDL web service, setting this
 flag means the DataSource doesn't actually attempt to contact the server but generates a sample
 response instead, based on the XML Schema of the response message embedded in the WSDL. The spoofed response will include all complexType elements and will fill in appropriate values by type for all simpleType elements, although the spoofed data will not conform to all xs:restriction declarations (eg xs:pattern).
 Note that if your WSDL does not fully describe
 the response format (some WSDL services just have a placeholder <xs:any> element), Smart
 GWT can only produce a partial response.  To use a hand-generated sample response, just save an
 XML file to disk and use the dataURL setting to point to it.
 
Default value is false
public java.lang.String customCriteriaFields
whereClause generated for this
 operationBinding, even if they are marked  customSQL="true". You can specify this property as a comma-separated list (eg, "foo, bar, baz") or by just repeating the <customCriteriaFields> tag multiple times with one field each.
 This property is only
 applicable to DataSources of "sql".
 
Default value is null
public java.lang.String excludeCriteriaFields
whereClause generated for this
 operationBinding.    This enables you to use these fields in a custom query while still allowing the
 $defaultWhereClause to be generated for all other fields.  For example, you might take a
 particular field and apply it in the WHERE clause of a subquery. 
 You can specify this
 property as a comma-separated list (eg, "foo, bar, baz") or by just repeating the
 <customCriteriaFields> tag multiple times with one field each. Note that if a field is
 included in both excludeCriteriaFields and customCriteriaFields,
 customCriteriaFields wins. 
 This property is only applicable to DataSources of "sql".
 
Default value is null
public java.lang.Boolean sqlUsePagingHint
DataSource.sqlUsePagingHint
 value.  Note this property is only applicable to  SQL DataSources, only when a  paging strategy of "sqlLimit" is in
 force, and it only has an  effect for those specific database products where we employ a native
 hint in the generated  SQL in an attempt to improve performance.
 Default value is null
DataSource.sqlUsePagingHintpublic java.util.Map xmlNamespaces
recordXPath and
 DataSourceField.valueXPath
 XPath expressions.
  
  xmlNamespaces should be specified as a mapping from namespace prefix to
  namespace URI, for example:
  
     xmlNamespaces : {
         az : "http://webservices.amazon.com/AWSECommerceService/2005-03-23"
     }
  
  By default, all namespaces declared on the document element (outermost element of the
  response) are made available with the prefix used in the document itself.
  Then, for non-WSDL-described XML results, if there is a default namespace on the document element, it is made available with the special prefix "default".
For results of WSDL-described operations, the prefix "service" means the service namespace, that is, the "targetNamespace" on the <definitions> element from the WSDL file. The prefix "schema" means the namespace of the outermost element in the output message for the current operation. "default" will be the schema namespace if there is one, otherwise the service namespace.
For basic information on XML Namespaces and their use in XPath, try the following search: http://www.google.com/search?q=XPath+xml+namespaces
Default value is null
public java.lang.String dataURL
 dataURL is
 typically set as DataSource.dataURL rather than on each individual operationBinding. 
 dataURL can be omitted for a DataSource using a Web Service (DataSource.serviceNamespace is
 set).
 
Default value is null
public boolean useForCacheSync
operationType "fetch" which
 specifies no operationId, this property determines whether the operationBinding  should be used for cache
 synchronization purposes (ie, to retrieve the record most recently added or changed).  This
 property has no effect on an operationBinding that specifies an  operationId - see cacheSyncOperation. In order to work correctly with Smart GWT's cache synchronization system, an operationBinding marked useForCacheSync should have the following properties:
Default value is true
public java.lang.String operationId
DSRequest.operationId for usage.
 Default value is null
public java.lang.String ownerIdField
DSRequest.isClientRequest() returns true on
 the server). When a new row is added by a client-initiated DSRequest, the ownerIdField will be automatically populated with the
 currently authenticated user (clobbering any value supplied by the client). Client-initiated
 attempts to update the ownerIdField will also be prevented. 
If you wish to set the
 ownerIdField to a different value via an "add" or "update" operation, you can do so in
 server-side DMI code (possibly consulting DSRequest.getClientSuppliedValues() to
 get the value that was clobbered). 
For client-initiated "fetch", "update" or "remove" operations, the server will modify client-supplied criteria so that only rows whose ownerIdField matches the currently authenticated user can be read, updated or deleted.
Overrides the same setting at the DataSource level. 
If ownerIdField
 is specified, requiresAuthentication will default to true. If
 requiresAuthentication is explicitly set to false, then
 unauthenticated users will be able to see all records. To avoid this, you can use guestUserId to specify a default user
 to apply when no one has authenticated.
 
Default value is null
DataSource.ownerIdField, 
guestUserIdpublic java.lang.Boolean creatorOverrides
dataSource.creatorOverrides. 
 This setting overrides  dataSource.creatorOverrides, for this operation only.
 Default value is null
public java.lang.Boolean providesMissingKeys
 Setting this property on an
 operationBinding circumvents this restriction for that operation only.  Note, this property
 differs from allowMultiUpdate in its  intent: allowMultiUpdate tells the framework that this
 operation deliberately  affects multiple records; providesMissingKeys tells the
 framework that this  operation will only affect one record, and will ensure this by providing
 values for missing keys during its operation.  Unlike allowMultiUpdate, setting
 this flag does not cause component caches to be invalidated 
Providing values for missing keys can be done in various ways:
<customSQL> or     
 <whereClause> can provide missing     key values from session storage or elsewhere in
 the provided record<script> can provide     arbitrary code to
 manipulate the record in whatever way they like before executing the      underlying built-in
 functionality<criteria>      to
 provide missing keysfieldValueExpressions,      which
 can be used to provide values for missing keysDMI to arbitrarily manipulate the record sent from
 the client, including providing values for any missing keys.  If you do  this, you do not need
 to specify providesMissingKeys because the request is  not validated for the
 presence of key values until after the DMI has run. Warning: Be aware that this is a potentially dangerous setting and should be used with care. With this flag set, the framework cannot guarantee that an update will not change or remove every row in a table: it becomes your code's responsibility to ensure that all PK values are provided to the operation by the time it actually needs them.
Default value is null
allowMultiUpdate, 
DataSourceField.autoGeneratedpublic java.lang.String groupClause
 For a
 dataSource of serverType "sql",
 this  property can be specified on an operationBinding to provide the server with a bespoke
 GROUP BY clause to use when constructing the SQL query to perform this operation.  The property
 should be a comma-separated list of column names and/or expressions, forming a valid GROUP BY
 clause in the syntax of the underlying database.  The server will  insert the text of this
 property immediately after the "GROUP BY" token. 
 Note that specifying this property enables
 you to use aggregate functions (such as  COUNT and SUM) in your selectClause. Also note that
 care is required  when using groupClause to ensure that the selectClause contains the fields
 you are grouping by.  Failure to do this correctly will result in a runtime SQL error. 
 This
 property is only applicable to operationBindings of  operationType "fetch". 
 See the documentation for customSQL for usage examples
 
Default value is null
public java.lang.String customSQL
 For a
 dataSource of serverType "sql"
 or "hibernate", this  property can be specified on an operationBinding to indicate that the
 server should run  user-specified SQL, rather than the query it would normally generate to
 satisfy a  dataSource operation.  This property allows you to provide a fully-customized query;
 an alternative is to provide custom "pieces" to the query generator, via properties such as
 whereClause and valuesClause.  See the  CustomQuerying for more details. 
 For a dataSource of type "sql",
 the Smart GWT server generates a number of useful query "pieces",  and makes them available to your
 custom SQL code via the Velocity templating  language (note that this is not available for
 "hibernate" dataSources). 
We also make the template variables $criteria and $values available, to give you direct access to the supplied criteria, and to the new field values for update and add operations. These variables are available to both "sql" and "hibernate" dataSources.
Note that you should use this feature with care. In particular, writing customSQL code that makes use of a particular database engine's features or syntax will make your application less portable.
 See CustomQuerying
 for an overview of writing custom queries and clauses. 
  <operationBinding operationId="customFetch"
 operationType="fetch"> 
   <customSQL>
     SELECT
 $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause ORDER BY
 $defaultOrderClause
   </customSQL>
 </operationBinding>
 
An example using the Smart GWT-supplied $criteria template variable:
  <operationBinding operationId="customFetch" operationType="fetch"> 
   <customSQL>
     SELECT foo, bar, baz FROM MyTable
 WHERE bar > $criteria.someValue
   </customSQL>
 </operationBinding>
 
An update example:
  <operationBinding
 operationId="myUpdateOp" operationType="update">
 
   <customSQL>
     UPDATE $defaultTableClause SET $defaultValuesClause WHERE bar  <=
 $criteria.someValue
   </customSQL>
 </operationBinding>
 
Default value is null
public java.lang.String customFields
selectClause and whereClause generated for this 
 operationBinding, even if they are marked customSQL="true".  If you need
 to apply different sets of overrides for the selectClause and the
 whereClause, use customValueFields and/or 
 customCriteriaFields instead.  If you specify both customFields and
 customCriteriaFields or  customValueFields, the more specific variant
 wins.  If you specify both  customFields and excludeCriteriaFields,  customFields wins (this is another use case when you may
 wish to use  customValueFields instead) 
You can specify this property as a comma-separated list (eg, "foo, bar, baz") or by just repeating the <customFields> tag multiple times with one field each.
 This property is only applicable to DataSources of
 "sql".
 
Default value is null
public java.lang.String[] exportFields
If exportFields is not provided, the exported output includes all visible fields from the DataSource (field.hidden=false), sorted in the order they're defined.
Default value is null
public DataSource responseDataSchema
 Once a set of XML elements have been selected via recordXPath or
 recordName, those elements are normally transformed to JavaScript objects using
 the fields of the DataSource that owns the operationBinding.  A
 responseDataSchema can be specified instead if the XML differs in some way between
 different DataSource operations, such that different values for field.valueXPath may be necessary
 to extract the same DataSource record from slightly different XML structures.
 
Default value is null
public SQLPagingStrategy sqlPaging
DataSource.sqlPaging value, and the defaults described in the documentation for that property.
 Default value is null
DataSource.sqlPagingpublic java.lang.Boolean allowAdvancedCriteria
DataSource.allowAdvancedCriteria for this operation only. See DataSource.supportsAdvancedCriteria() for further information.  NOTE: If you specify
 this property in a DataSource descriptor  (.ds.xml file), it is enforced on the
 server.  This means that if you run  a request containing AdvancedCriteria against an
 OperationBinding that advertises itself as allowAdvancedCriteria:false, it will be
 rejected.
 
Default value is null
DataSource.allowAdvancedCriteria