package com.smartgwt.client.data;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.core.client.JavaScriptObject;
import com.smartgwt.client.rpc.RPCRequest;
import java.util.Map;
public class XMLTools {
/**
* Load an XML file containing XML schema definitions and create DataSource and SimpleType objects to represent the schema.
* You can use to loaded schema to bind ISC components, perform validation, create editing interfaces, and build other
* metadata-driven interfaces.
* <p>
* All <xsd:complexType> declarations become ISC DataSources, and all <xsd:simpleType> definitions become
* atomic type definitions.
* <p>
* By default, named complexType definitions and named element definitions containing complexTypes become global
* DataSources, that is, they can be fetched with DataSource.getDataSource(). Inline complexType definitions get
* automatically generated names.
* <p>
* Named simpleType declarations become global ISC atomic types, that is, subsequently defined DataSources can use
* them for DataSourceField.type. XML schema "restrictions" for simple types are automatically translated to
* DataSourceField.valueMap or DataSourceField.validators as appropriate.
* <p>
* The created SchemaSet object is available in the callback as the single parameter "schemaSet", or can retrieved
* via SchemaSet.get(schemaNamespace).
* <p>
* NOTE: required fields: the XML concept of "required" for an attribute or subelement, expressed via use="required"
* (for an attribute) or minOccurs > 0 (for a subelement), is that the attribute or element must be present in the
* XML document but can have any value, including being empty or null. The SmartGWT notion of required means non-null.
* You can express the SmartClient notion of required in XML Schema with the combination of maxOccurs>0 and a minLength
* or length "restriction", and SmartClient will recognize the field as SmartClient-required, with all of the behaviors
* that implies (eg, specially styled form titles, automatic validation, etc).
*
* @param schemaURL URL to load the schema from
* @param callback the callback
*/
public static native void loadXMLSchema(String schemaURL, XSDLoadCallback callback) /*-{
$wnd.isc.XMLTools.loadXMLSchema(schemaURL, function(schemaSet) {
var schemaSetJ = @com.smartgwt.client.data.SchemaSet::new(Lcom/google/gwt/core/client/JavaScriptObject;)(schemaSet);
callback.@com.smartgwt.client.data.XSDLoadCallback::execute(Lcom/smartgwt/client/data/SchemaSet;)(schemaSetJ);
});
}-*/;
/**
* Load an XML file containing XML schema definitions and create DataSource and SimpleType objects to represent the schema.
* You can use to loaded schema to bind ISC components, perform validation, create editing interfaces, and build other
* metadata-driven interfaces.
* <p>
* All <xsd:complexType> declarations become ISC DataSources, and all <xsd:simpleType> definitions become
* atomic type definitions.
* <p>
* By default, named complexType definitions and named element definitions containing complexTypes become global
* DataSources, that is, they can be fetched with DataSource.getDataSource(). Inline complexType definitions get
* automatically generated names.
* <p>
* Named simpleType declarations become global ISC atomic types, that is, subsequently defined DataSources can use
* them for DataSourceField.type. XML schema "restrictions" for simple types are automatically translated to
* DataSourceField.valueMap or DataSourceField.validators as appropriate.
* <p>
* The created SchemaSet object is available in the callback as the single parameter "schemaSet", or can retrieved
* via SchemaSet.get(schemaNamespace).
* <p>
* NOTE: required fields: the XML concept of "required" for an attribute or subelement, expressed via use="required"
* (for an attribute) or minOccurs > 0 (for a subelement), is that the attribute or element must be present in the
* XML document but can have any value, including being empty or null. The SmartGWT notion of required means non-null.
* You can express the SmartClient notion of required in XML Schema with the combination of maxOccurs>0 and a minLength
* or length "restriction", and SmartClient will recognize the field as SmartClient-required, with all of the behaviors
* that implies (eg, specially styled form titles, automatic validation, etc).
*
* @param schemaURL URL to load the schema from
* @param callback the callback
* @param requestProperties additional properties to set on the RPCRequest that will be issued
*/
public static native void loadXMLSchema(String schemaURL, XSDLoadCallback callback, RPCRequest requestProperties) /*-{
var reqJS = requestProperties == null ? null : requestProperties.@com.smartgwt.client.rpc.RPCRequest::getJsObj()();
$wnd.isc.XMLTools.loadXMLSchema(schemaURL, function(schemaSet) {
var schemaSetJ = @com.smartgwt.client.data.SchemaSet::new(Lcom/google/gwt/core/client/JavaScriptObject;)(schemaSet);
callback.@com.smartgwt.client.data.XSDLoadCallback::execute(Lcom/smartgwt/client/data/SchemaSet;)(schemaSetJ);
}, reqJS);
}-*/;
/**
* Load an XML file containing XML schema definitions and create DataSource and SimpleType objects to represent the schema.
* You can use to loaded schema to bind ISC components, perform validation, create editing interfaces, and build other
* metadata-driven interfaces.
* <p>
* All <xsd:complexType> declarations become ISC DataSources, and all <xsd:simpleType> definitions become
* atomic type definitions.
* <p>
* By default, named complexType definitions and named element definitions containing complexTypes become global
* DataSources, that is, they can be fetched with DataSource.getDataSource(). Inline complexType definitions get
* automatically generated names.
* <p>
* Named simpleType declarations become global ISC atomic types, that is, subsequently defined DataSources can use
* them for DataSourceField.type. XML schema "restrictions" for simple types are automatically translated to
* DataSourceField.valueMap or DataSourceField.validators as appropriate.
* <p>
* The created SchemaSet object is available in the callback as the single parameter "schemaSet", or can retrieved
* via SchemaSet.get(schemaNamespace).
* <p>
* NOTE: required fields: the XML concept of "required" for an attribute or subelement, expressed via use="required"
* (for an attribute) or minOccurs > 0 (for a subelement), is that the attribute or element must be present in the
* XML document but can have any value, including being empty or null. The SmartGWT notion of required means non-null.
* You can express the SmartClient notion of required in XML Schema with the combination of maxOccurs>0 and a minLength
* or length "restriction", and SmartClient will recognize the field as SmartClient-required, with all of the behaviors
* that implies (eg, specially styled form titles, automatic validation, etc).
*
* @param schemaURL URL to load the schema from
* @param callback the callback
* @param requestProperties additional properties to set on the RPCRequest that will be issued
* @param autoLoadImports if set, xsd:import statements will be processed automatically to load dependent XSD files where a "location" is specified.
* The callback will not fire until all dependencies have been loaded
*/
public static native void loadXMLSchema(String schemaURL, XSDLoadCallback callback, RPCRequest requestProperties, boolean autoLoadImports) /*-{
var reqJS = requestProperties == null ? null : requestProperties.@com.smartgwt.client.rpc.RPCRequest::getJsObj()();
$wnd.isc.XMLTools.loadXMLSchema(schemaURL, function(schemaSet) {
var schemaSetJ = @com.smartgwt.client.data.SchemaSet::new(Lcom/google/gwt/core/client/JavaScriptObject;)(schemaSet);
callback.@com.smartgwt.client.data.XSDLoadCallback::execute(Lcom/smartgwt/client/data/SchemaSet;)(schemaSetJ);
}, reqJS, autoLoadImports);
}-*/;
/**
* Load a WSDL file and create an instance of WebService that allows invoking operations and binding DataSources to web service operations.
* The created WebService object is available in the callback as the single parameter "service", or can retrieved via WebService.get(serviceNamespace).
* <p>
* XML Schema present in the WSDL file will also will also be processed as described in XMLTools.loadXMLSchema().
* <p>
*
* Platform notes: loadWSDL() is not supported in Safari 2.0 (but is supported in Safari 3.0.3 and greater)
*
* @param wsdlURL URL to load the WSDL file from
* @param callback the callback
*/
public static native void loadWSDL(String wsdlURL, WSDLLoadCallback callback) /*-{
$wnd.isc.XMLTools.loadWSDL(wsdlURL, function(service) {
var serviceJ = @com.smartgwt.client.data.WebService::new(Lcom/google/gwt/core/client/JavaScriptObject;)(service);
callback.@com.smartgwt.client.data.WSDLLoadCallback::execute(Lcom/smartgwt/client/data/WebService;)(serviceJ);
});
}-*/;
/**
* Load a WSDL file and create an instance of WebService that allows invoking operations and binding DataSources to web service operations.
* The created WebService object is available in the callback as the single parameter "service", or can retrieved via WebService.get(serviceNamespace).
* <p>
* XML Schema present in the WSDL file will also will also be processed as described in XMLTools.loadXMLSchema().
* <p>
*
* Platform notes: loadWSDL() is not supported in Safari 2.0 (but is supported in Safari 3.0.3 and greater)
*
* @param wsdlURL URL to load the WSDL file from
* @param callback the callback
* @param requestProperties additional properties to set on the RPCRequest that will be issued
*/
public static native void loadWSDL(String wsdlURL, WSDLLoadCallback callback, RPCRequest requestProperties) /*-{
var reqJS = requestProperties == null ? null : requestProperties.@com.smartgwt.client.rpc.RPCRequest::getJsObj()();
$wnd.isc.XMLTools.loadWSDL(wsdlURL, function(service) {
var serviceJ = @com.smartgwt.client.data.WebService::new(Lcom/google/gwt/core/client/JavaScriptObject;)(service);
callback.@com.smartgwt.client.data.WSDLLoadCallback::execute(Lcom/smartgwt/client/data/WebService;)(serviceJ);
}, reqJS);
}-*/;
/**
* Load a WSDL file and create an instance of WebService that allows invoking operations and binding DataSources to web service operations.
* The created WebService object is available in the callback as the single parameter "service", or can retrieved via WebService.get(serviceNamespace).
* <p>
* XML Schema present in the WSDL file will also will also be processed as described in XMLTools.loadXMLSchema().
* <p>
*
* Platform notes: loadWSDL() is not supported in Safari 2.0 (but is supported in Safari 3.0.3 and greater)
*
* @param wsdlURL URL to load the WSDL file from
* @param callback the callback
* @param requestProperties additional properties to set on the RPCRequest that will be issued
* @param autoLoadImports if set, xsd:import statements will be processed automatically to load dependent XSD files where a "location" is specified.
* The callback will not fire until all dependencies have been loaded
*/
public static native void loadWSDL(String wsdlURL, WSDLLoadCallback callback, RPCRequest requestProperties, boolean autoLoadImports) /*-{
var reqJS = requestProperties == null ? null : requestProperties.@com.smartgwt.client.rpc.RPCRequest::getJsObj()();
$wnd.isc.XMLTools.loadWSDL(wsdlURL, function(service) {
var serviceJ = @com.smartgwt.client.data.WebService::new(Lcom/google/gwt/core/client/JavaScriptObject;)(service);
callback.@com.smartgwt.client.data.WSDLLoadCallback::execute(Lcom/smartgwt/client/data/WebService;)(serviceJ);
}, reqJS, autoLoadImports);
}-*/;
/**
* Retrieve a string value from an XML element or document based on an XPath expression. If more than one node matches,
* only the first node's value will be returned.
* <p>
* Namespacing works as described under XMLTools.selectNodes()
* <p>
* NOTE: this API cannot be supported on the Safari web browser for versions prior to 3.0.3.
*
* @param element Native XMLElement, document or String xml to select from
* @param expression XPath expression to use to select nodes
* @return result of the XPath, in String form
*/
public static native String selectString(Object element, String expression) /*-{
return $wnd.isc.XMLTools.selectString(element, expression);
}-*/;
/**
* Retrieve a string value from an XML element or document based on an XPath expression. If more than one node matches,
* only the first node's value will be returned.
* <p>
* Namespacing works as described under XMLTools.selectNodes()
* <p>
* NOTE: this API cannot be supported on the Safari web browser for versions prior to 3.0.3.
*
* @param element Native XMLElement, document or String xml to select from
* @param expression XPath expression to use to select nodes
* @param namespaces namespaces
* @return result of the XPath, in String form
*/
public static native String selectString(Object element, String expression, Map namespaces) /*-{
return $wnd.isc.XMLTools.selectString(element, expression, @com.smartgwt.client.util.JSOHelper::convertMapToJavascriptObject(Ljava/util/Map;)(namespaces));
}-*/;
/**
* Retrieve a set of nodes from an XML element or document based on an XPath expression.
*
* @param element Native XMLElement,document or string xml to select from
* @param expression XPath expression to use to select nodes
* @return list of nodes matching XPath
*/
public static native Object selectNodes(Object element, String expression) /*-{
return $wnd.isc.XMLTools.selectNodes(element, expression);
}-*/;
/**
* Retrieve a set of nodes from an XML element or document based on an XPath expression.
* <p>
* If the target document is namespaced, namespace prefixes declared in the document element of the target document
* will be available, as well as the default namespace, if declared, under the prefix "default".
* <p>
* To declare your own namespace prefixes, provide a prefix to URI mapping as a simple JS Object, for example:
* <p>
* {
* az : "http://webservices.amazon.com/AWSECommerceService/2005-03-23",
* xsd : "http://www.w3.org/2001/XMLSchema"
* }
* <p>
* NOTE: this API cannot be supported on the Safari web browser for versions earlier than 3.0.3.
*
* @param element Native XMLElement,document to select from
* @param expression XPath expression to use to select nodes
* @param namespaces namespace mapping used by the expression as prefix -> URI mapping
* @return list of nodes matching XPath
*/
public static native Object selectNodes(Object element, String expression, Map namespaces) /*-{
return $wnd.isc.XMLTools.selectNodes(element, expression, @com.smartgwt.client.util.JSOHelper::convertMapToJavascriptObject(Ljava/util/Map;)(namespaces));
}-*/;
/**
* Applies an XPath expression to JavaScript objects, returning matching objects.
*
* @param element Object to select results from
* @param expression XPath expression
* @return Array of matching objects, or null for no match
*/
public static native JSONArray selectObjects(Object element, String expression) /*-{
var ret = $wnd.isc.XMLTools.selectObjects(element, expression);
return @com.google.gwt.json.client.JSONArray::new(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
}-*/;
/**
* ranslates an XML fragment to JavaScript collections.
*
* @param elements XMLElement or XMLDocument element to tranform to JS
* @return The resulting JavaScript collection
*/
public static native JavaScriptObject toJS(Object elements) /*-{
return $wnd.isc.XMLTools.toJS(elements);
}-*/;
}