You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ko...@apache.org on 2014/04/23 10:10:51 UTC

[02/15] [OLINGO-238] Build infrastructure for datajs I

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f1cfcbc5/datajs/src/odata-xml.js
----------------------------------------------------------------------
diff --git a/datajs/src/odata-xml.js b/datajs/src/odata-xml.js
deleted file mode 100644
index b2d00f6..0000000
--- a/datajs/src/odata-xml.js
+++ /dev/null
@@ -1,850 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation 
-// files (the "Software"), to deal  in the Software without restriction, including without limitation the rights  to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the 
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-// WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// odata-xml.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-    var odata = window.OData || {};
-
-    // Imports.
-
-    var djsassert = datajs.djsassert;
-    var http = datajs.http;
-    var isArray = datajs.isArray;
-    var isDate = datajs.isDate;
-    var isObject = datajs.isObject;
-    var normalizeURI = datajs.normalizeURI;
-    var parseInt10 = datajs.parseInt10;
-    var xmlAppendChild = datajs.xmlAppendChild;
-    var xmlAppendChildren = datajs.xmlAppendChildren;
-    var xmlAttributes = datajs.xmlAttributes;
-    var xmlBaseURI = datajs.xmlBaseURI;
-    var xmlChildElements = datajs.xmlChildElements;
-    var xmlDom = datajs.xmlDom;
-    var xmlFirstChildElement = datajs.xmlFirstChildElement;
-    var xmlInnerText = datajs.xmlInnerText;
-    var xmlLocalName = datajs.xmlLocalName;
-    var xmlNamespaceURI = datajs.xmlNamespaceURI;
-    var xmlNewAttribute = datajs.xmlNewAttribute;
-    var xmlNewElement = datajs.xmlNewElement;
-    var xmlNodeValue = datajs.xmlNodeValue;
-    var xmlNS = datajs.xmlNS;
-    var xmlnsNS = datajs.xmlnsNS;
-    var xmlParse = datajs.xmlParse;
-    var xmlQualifiedName = datajs.xmlQualifiedName;
-    var xmlSerialize = datajs.xmlSerialize;
-    var xmlSiblingElement = datajs.xmlSiblingElement;
-    var w3org = datajs.w3org;
-
-    var dataItemTypeName = odata.dataItemTypeName;
-    var EDM_BINARY = odata.EDM_BINARY;
-    var EDM_BOOLEAN = odata.EDM_BOOLEAN;
-    var EDM_BYTE = odata.EDM_BYTE;
-    var EDM_DATETIME = odata.EDM_DATETIME;
-    var EDM_DATETIMEOFFSET = odata.EDM_DATETIMEOFFSET;
-    var EDM_DECIMAL = odata.EDM_DECIMAL;
-    var EDM_DOUBLE = odata.EDM_DOUBLE;
-    var EDM_GEOGRAPHY = odata.EDM_GEOGRAPHY;
-    var EDM_GEOGRAPHY_POINT = odata.EDM_GEOGRAPHY_POINT;
-    var EDM_GEOGRAPHY_LINESTRING = odata.EDM_GEOGRAPHY_LINESTRING;
-    var EDM_GEOGRAPHY_POLYGON = odata.EDM_GEOGRAPHY_POLYGON;
-    var EDM_GEOGRAPHY_COLLECTION = odata.EDM_GEOGRAPHY_COLLECTION;
-    var EDM_GEOGRAPHY_MULTIPOLYGON = odata.EDM_GEOGRAPHY_MULTIPOLYGON;
-    var EDM_GEOGRAPHY_MULTILINESTRING = odata.EDM_GEOGRAPHY_MULTILINESTRING;
-    var EDM_GEOGRAPHY_MULTIPOINT = odata.EDM_GEOGRAPHY_MULTIPOINT;
-    var EDM_GEOMETRY = odata.EDM_GEOMETRY;
-    var EDM_GEOMETRY_POINT = odata.EDM_GEOMETRY_POINT;
-    var EDM_GEOMETRY_LINESTRING = odata.EDM_GEOMETRY_LINESTRING;
-    var EDM_GEOMETRY_POLYGON = odata.EDM_GEOMETRY_POLYGON;
-    var EDM_GEOMETRY_COLLECTION = odata.EDM_GEOMETRY_COLLECTION;
-    var EDM_GEOMETRY_MULTIPOLYGON = odata.EDM_GEOMETRY_MULTIPOLYGON;
-    var EDM_GEOMETRY_MULTILINESTRING = odata.EDM_GEOMETRY_MULTILINESTRING;
-    var EDM_GEOMETRY_MULTIPOINT = odata.EDM_GEOMETRY_MULTIPOINT;
-    var EDM_GUID = odata.EDM_GUID;
-    var EDM_INT16 = odata.EDM_INT16;
-    var EDM_INT32 = odata.EDM_INT32;
-    var EDM_INT64 = odata.EDM_INT64;
-    var EDM_SBYTE = odata.EDM_SBYTE;
-    var EDM_SINGLE = odata.EDM_SINGLE;
-    var EDM_STRING = odata.EDM_STRING;
-    var EDM_TIME = odata.EDM_TIME;
-    var GEOJSON_POINT = odata.GEOJSON_POINT;
-    var GEOJSON_LINESTRING = odata.GEOJSON_LINESTRING;
-    var GEOJSON_POLYGON = odata.GEOJSON_POLYGON;
-    var GEOJSON_MULTIPOINT = odata.GEOJSON_MULTIPOINT;
-    var GEOJSON_MULTILINESTRING = odata.GEOJSON_MULTILINESTRING;
-    var GEOJSON_MULTIPOLYGON = odata.GEOJSON_MULTIPOLYGON;
-    var GEOJSON_GEOMETRYCOLLECTION = odata.GEOJSON_GEOMETRYCOLLECTION;
-    var formatDateTimeOffset = odata.formatDateTimeOffset;
-    var formatDuration = odata.formatDuration;
-    var getCollectionType = odata.getCollectionType;
-    var gmlNewODataSpatialValue = odata.gmlNewODataSpatialValue;
-    var gmlReadODataSpatialValue = odata.gmlReadODataSpatialValue;
-    var gmlXmlNs = odata.gmlXmlNs;
-    var handler = odata.handler;
-    var isCollection = odata.isCollection;
-    var isCollectionType = odata.isCollectionType;
-    var isDeferred = odata.isDeferred;
-    var isNamedStream = odata.isNamedStream;
-    var isGeographyEdmType = odata.isGeographyEdmType;
-    var isGeometryEdmType = odata.isGeometryEdmType;
-    var isPrimitive = odata.isPrimitive;
-    var isPrimitiveEdmType = odata.isPrimitiveEdmType;
-    var lookupComplexType = odata.lookupComplexType;
-    var lookupProperty = odata.lookupProperty;
-    var maxVersion = odata.maxVersion;
-    var navigationPropertyKind = odata.navigationPropertyKind;
-    var MAX_DATA_SERVICE_VERSION = odata.MAX_DATA_SERVICE_VERSION;
-    var parseBool = odata.parseBool;
-    var parseDateTime = odata.parseDateTime;
-    var parseDateTimeOffset = odata.parseDateTimeOffset;
-    var parseDuration = odata.parseDuration;
-    var parseTimezone = odata.parseTimezone;
-
-    // CONTENT START
-
-    var xmlMediaType = "application/xml";
-
-    var ado = http + "schemas.microsoft.com/ado/";      // http://schemas.microsoft.com/ado/
-    var adoDs = ado + "2007/08/dataservices";           // http://schemas.microsoft.com/ado/2007/08/dataservices
-
-    var edmxNs = ado + "2007/06/edmx";                  // http://schemas.microsoft.com/ado/2007/06/edmx
-    var edmNs1 = ado + "2006/04/edm";                   // http://schemas.microsoft.com/ado/2006/04/edm
-    var edmNs1_1 = ado + "2007/05/edm";                 // http://schemas.microsoft.com/ado/2007/05/edm
-    var edmNs1_2 = ado + "2008/01/edm";                 // http://schemas.microsoft.com/ado/2008/01/edm
-
-    // There are two valid namespaces for Edm 2.0
-    var edmNs2a = ado + "2008/09/edm";                  // http://schemas.microsoft.com/ado/2008/09/edm
-    var edmNs2b = ado + "2009/08/edm";                  // http://schemas.microsoft.com/ado/2009/08/edm
-
-    var edmNs3 = ado + "2009/11/edm";                   // http://schemas.microsoft.com/ado/2009/11/edm
-
-    var odataXmlNs = adoDs;                             // http://schemas.microsoft.com/ado/2007/08/dataservices
-    var odataMetaXmlNs = adoDs + "/metadata";           // http://schemas.microsoft.com/ado/2007/08/dataservices/metadata
-    var odataRelatedPrefix = adoDs + "/related/";       // http://schemas.microsoft.com/ado/2007/08/dataservices/related
-    var odataScheme = adoDs + "/scheme";                // http://schemas.microsoft.com/ado/2007/08/dataservices/scheme
-
-    var odataPrefix = "d";
-    var odataMetaPrefix = "m";
-
-    var createAttributeExtension = function (domNode, useNamespaceURI) {
-        /// <summary>Creates an extension object for the specified attribute.</summary>
-        /// <param name="domNode">DOM node for the attribute.</param>
-        /// <param name="useNamespaceURI" type="Boolean">Flag indicating if the namespaceURI property should be added to the extension object instead of the namespace property.</param>
-        /// <remarks>
-        ///    The useNamespaceURI flag is used to prevent a breaking change from older versions of datajs in which extension
-        ///    objects created for Atom extension attributes have the namespaceURI property instead of the namespace one.
-        ///    
-        ///    This flag and the namespaceURI property should be deprecated in future major versions of the library.
-        /// </remarks>
-        /// <returns type="Object">The new extension object.</returns>
-
-        djsassert(domNode.nodeType === 2, "createAttributeExtension - domNode is not an attribute node!!");
-        var extension = { name: xmlLocalName(domNode), value: domNode.value };
-        extension[useNamespaceURI ? "namespaceURI" : "namespace"] = xmlNamespaceURI(domNode);
-
-        return extension;
-    };
-
-    var createElementExtension = function (domNode, useNamespaceURI) {
-        /// <summary>Creates an extension object for the specified element.</summary>
-        /// <param name="domNode">DOM node for the element.</param>
-        /// <param name="useNamespaceURI" type="Boolean">Flag indicating if the namespaceURI property should be added to the extension object instead of the namespace property.</param>
-        /// <remarks>
-        ///    The useNamespaceURI flag is used to prevent a breaking change from older versions of datajs in which extension
-        ///    objects created for Atom extension attributes have the namespaceURI property instead of the namespace one.
-        ///    
-        ///    This flag and the namespaceURI property should be deprecated in future major versions of the library.
-        /// </remarks>
-        /// <returns type="Object">The new extension object.</returns>
-
-        djsassert(domNode.nodeType === 1, "createAttributeExtension - domNode is not an element node!!");
-
-        var attributeExtensions = [];
-        var childrenExtensions = [];
-
-        var i, len;
-        var attributes = domNode.attributes;
-        for (i = 0, len = attributes.length; i < len; i++) {
-            var attr = attributes[i];
-            if (xmlNamespaceURI(attr) !== xmlnsNS) {
-                attributeExtensions.push(createAttributeExtension(attr, useNamespaceURI));
-            }
-        }
-
-        var child = domNode.firstChild;
-        while (child != null) {
-            if (child.nodeType === 1) {
-                childrenExtensions.push(createElementExtension(child, useNamespaceURI));
-            }
-            child = child.nextSibling;
-        }
-
-        var extension = {
-            name: xmlLocalName(domNode),
-            value: xmlInnerText(domNode),
-            attributes: attributeExtensions,
-            children: childrenExtensions
-        };
-
-        extension[useNamespaceURI ? "namespaceURI" : "namespace"] = xmlNamespaceURI(domNode);
-        return extension;
-    };
-
-    var isCollectionItemElement = function (domElement) {
-        /// <summary>Checks whether the domElement is a collection item.</summary>
-        /// <param name="domElement">DOM element possibliy represnting a collection item.</param>
-        /// <returns type="Boolean">True if the domeElement belongs to the OData metadata namespace and its local name is "element"; false otherwise.</returns>
-
-        return xmlNamespaceURI(domElement) === odataXmlNs && xmlLocalName(domElement) === "element";
-    };
-
-    var makePropertyMetadata = function (type, extensions) {
-        /// <summary>Creates an object containing property metadata.</summary>
-        /// <param type="String" name="type">Property type name.</param>
-        /// <param type="Array" name="extensions">Array of attribute extension objects.</param>
-        /// <returns type="Object">Property metadata object cotaining type and extensions fields.</returns>
-
-        return { type: type, extensions: extensions };
-    };
-
-    var odataInferTypeFromPropertyXmlDom = function (domElement) {
-        /// <summary>Infers type of a property based on its xml DOM tree.</summary>
-        /// <param name="domElement">DOM element for the property.</param>
-        /// <returns type="String">Inferred type name; null if the type cannot be determined.</returns>
-
-        if (xmlFirstChildElement(domElement, gmlXmlNs)) {
-            return EDM_GEOMETRY;
-        }
-
-        var firstChild = xmlFirstChildElement(domElement, odataXmlNs);
-        if (!firstChild) {
-            return EDM_STRING;
-        }
-
-        if (isCollectionItemElement(firstChild)) {
-            var sibling = xmlSiblingElement(firstChild, odataXmlNs);
-            if (sibling && isCollectionItemElement(sibling)) {
-                // More than one <element> tag have been found, it can be safely assumed that this is a collection property.
-                return "Collection()";
-            }
-        }
-
-        return null;
-    };
-
-    var xmlReadODataPropertyAttributes = function (domElement) {
-        /// <summary>Reads the attributes of a property DOM element in an OData XML document.</summary>
-        /// <param name="domElement">DOM element for the property.</param>
-        /// <returns type="Object">Object containing the property type, if it is null, and its attribute extensions.</returns>
-
-        var type = null;
-        var isNull = false;
-        var extensions = [];
-
-        xmlAttributes(domElement, function (attribute) {
-            var nsURI = xmlNamespaceURI(attribute);
-            var localName = xmlLocalName(attribute);
-            var value = xmlNodeValue(attribute);
-
-            if (nsURI === odataMetaXmlNs) {
-                if (localName === "null") {
-                    isNull = (value.toLowerCase() === "true");
-                    return;
-                }
-
-                if (localName === "type") {
-                    type = value;
-                    return;
-                }
-            }
-
-            if (nsURI !== xmlNS && nsURI !== xmlnsNS) {
-                extensions.push(createAttributeExtension(attribute, true));
-                return;
-            }
-        });
-
-        return { type: (!type && isNull ? EDM_STRING : type), isNull: isNull, extensions: extensions };
-    };
-
-    var xmlReadODataProperty = function (domElement) {
-        /// <summary>Reads a property DOM element in an OData XML document.</summary>
-        /// <param name="domElement">DOM element for the property.</param>
-        /// <returns type="Object">Object with name, value, and metadata for the property.</returns>
-
-        if (xmlNamespaceURI(domElement) !== odataXmlNs) {
-            // domElement is not a proprety element because it is not in the odata xml namespace.
-            return null;
-        }
-
-        var propertyName = xmlLocalName(domElement);
-        var propertyAttributes = xmlReadODataPropertyAttributes(domElement);
-
-        var propertyIsNull = propertyAttributes.isNull;
-        var propertyType = propertyAttributes.type;
-
-        var propertyMetadata = makePropertyMetadata(propertyType, propertyAttributes.extensions);
-        var propertyValue = propertyIsNull ? null : xmlReadODataPropertyValue(domElement, propertyType, propertyMetadata);
-
-        return { name: propertyName, value: propertyValue, metadata: propertyMetadata };
-    };
-
-    var xmlReadODataPropertyValue = function (domElement, propertyType, propertyMetadata) {
-        /// <summary>Reads the value of a property in an OData XML document.</summary>
-        /// <param name="domElement">DOM element for the property.</param>
-        /// <param name="propertyType" type="String">Property type name.</param>
-        /// <param name="propertyMetadata" type="Object">Object that will store metadata about the property.</param>
-        /// <returns>Property value.</returns>
-
-        if (!propertyType) {
-            propertyType = odataInferTypeFromPropertyXmlDom(domElement);
-            propertyMetadata.type = propertyType;
-        }
-
-        var isGeograhpyType = isGeographyEdmType(propertyType);
-        if (isGeograhpyType || isGeometryEdmType(propertyType)) {
-            return xmlReadODataSpatialPropertyValue(domElement, propertyType, isGeograhpyType);
-        }
-
-        if (isPrimitiveEdmType(propertyType)) {
-            return xmlReadODataEdmPropertyValue(domElement, propertyType);
-        }
-
-        if (isCollectionType(propertyType)) {
-            return xmlReadODataCollectionPropertyValue(domElement, propertyType, propertyMetadata);
-        }
-
-        return xmlReadODataComplexPropertyValue(domElement, propertyType, propertyMetadata);
-    };
-
-    var xmlReadODataSpatialPropertyValue = function (domElement, propertyType, isGeography) {
-        /// <summary>Reads the value of an spatial property in an OData XML document.</summary>
-        /// <param name="property">DOM element for the spatial property.</param>
-        /// <param name="propertyType" type="String">Property type name.</param>
-        /// <param name="isGeography" type="Boolean" Optional="True">Flag indicating if the value uses a geographic reference system or not.<param>
-        /// <remarks>
-        ///    When using a geographic reference system, the first component of all the coordinates in each <pos> element in the GML DOM tree is the Latitude and
-        ///    will be deserialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>Spatial property value in GeoJSON format.</returns>
-
-        var gmlRoot = xmlFirstChildElement(domElement, gmlXmlNs);
-        djsassert(gmlRoot, "xmlReadODataSpatialPropertyValue - domElement doesn't have a child element that belongs to the gml namespace!!");
-
-        var value = gmlReadODataSpatialValue(gmlRoot, isGeography);
-        value.__metadata = { type: propertyType };
-        return value;
-    };
-
-    var xmlReadODataEdmPropertyValue = function (domNode, propertyType) {
-        /// <summary>Reads the value of an EDM property in an OData XML document.</summary>
-        /// <param name="donNode">DOM node for the EDM property.</param>
-        /// <param name="propertyType" type="String">Property type name.</param>
-        /// <returns>EDM property value.</returns>
-
-        var propertyValue = xmlNodeValue(domNode) || "";
-
-        switch (propertyType) {
-            case EDM_BOOLEAN:
-                return parseBool(propertyValue);
-            case EDM_BINARY:
-            case EDM_DECIMAL:
-            case EDM_GUID:
-            case EDM_INT64:
-            case EDM_STRING:
-                return propertyValue;
-            case EDM_BYTE:
-            case EDM_INT16:
-            case EDM_INT32:
-            case EDM_SBYTE:
-                return parseInt10(propertyValue);
-            case EDM_DOUBLE:
-            case EDM_SINGLE:
-                return parseFloat(propertyValue);
-            case EDM_TIME:
-                return parseDuration(propertyValue);
-            case EDM_DATETIME:
-                return parseDateTime(propertyValue);
-            case EDM_DATETIMEOFFSET:
-                return parseDateTimeOffset(propertyValue);
-        }
-
-        return propertyValue;
-    };
-
-    var xmlReadODataComplexPropertyValue = function(domElement, propertyType, propertyMetadata) {
-        /// <summary>Reads the value of a complex type property in an OData XML document.</summary>
-        /// <param name="property">DOM element for the complex type property.</param>
-        /// <param name="propertyType" type="String">Property type name.</param>
-        /// <param name="propertyMetadata" type="Object">Object that will store metadata about the property.</param>
-        /// <returns type="Object">Complex type property value.</returns>
-
-        var propertyValue = { __metadata: { type: propertyType } };
-        xmlChildElements(domElement, function(child) {
-            var childProperty = xmlReadODataProperty(child);
-            var childPropertyName = childProperty.name;
-
-            propertyMetadata.properties = propertyMetadata.properties || {};
-            propertyMetadata.properties[childPropertyName] = childProperty.metadata;
-            propertyValue[childPropertyName] = childProperty.value;
-        });
-
-        return propertyValue;
-    };
-
-    var xmlReadODataCollectionPropertyValue = function (domElement, propertyType, propertyMetadata) {
-        /// <summary>Reads the value of a collection property in an OData XML document.</summary>
-        /// <param name="property">DOM element for the collection property.</param>
-        /// <param name="propertyType" type="String">Property type name.</param>
-        /// <param name="propertyMetadata" type="Object">Object that will store metadata about the property.</param>
-        /// <returns type="Object">Collection property value.</returns>
-
-        var items = [];
-        var itemsMetadata = propertyMetadata.elements = [];
-        var collectionType = getCollectionType(propertyType);
-
-        xmlChildElements(domElement, function (child) {
-            if (isCollectionItemElement(child)) {
-                var itemAttributes = xmlReadODataPropertyAttributes(child);
-                var itemExtensions = itemAttributes.extensions;
-                var itemType = itemAttributes.type || collectionType;
-                var itemMetadata = makePropertyMetadata(itemType, itemExtensions);
-
-                var item = xmlReadODataPropertyValue(child, itemType, itemMetadata);
-
-                items.push(item);
-                itemsMetadata.push(itemMetadata);
-            }
-        });
-
-        return { __metadata: { type: propertyType === "Collection()" ? null : propertyType }, results: items };
-    };
-
-    var readODataXmlDocument = function (xmlRoot, baseURI) {
-        /// <summary>Reads an OData link(s) producing an object model in return.</summary>
-        /// <param name="xmlRoot">Top-level element to read.</param>
-        /// <param name="baseURI" type="String">Base URI for normalizing relative URIs found in the XML payload.</param>
-        /// <returns type="Object">The object model representing the specified element.</returns>
-
-        if (xmlNamespaceURI(xmlRoot) === odataXmlNs) {
-            baseURI = xmlBaseURI(xmlRoot, baseURI);
-            var localName = xmlLocalName(xmlRoot);
-
-            if (localName === "links") {
-                return readLinks(xmlRoot, baseURI);
-            }
-            if (localName === "uri") {
-                return readUri(xmlRoot, baseURI);
-            }
-        }
-        return undefined;
-    };
-
-    var readLinks = function (linksElement, baseURI) {
-        /// <summary>Deserializes an OData XML links element.</summary>
-        /// <param name="linksElement">XML links element.</param>
-        /// <param name="baseURI" type="String">Base URI for normalizing relative URIs found in the XML payload.</param>
-        /// <returns type="Object">A new object representing the links collection.</returns>
-
-        var uris = [];
-
-        xmlChildElements(linksElement, function (child) {
-            if (xmlLocalName(child) === "uri" && xmlNamespaceURI(child) === odataXmlNs) {
-                uris.push(readUri(child, baseURI));
-            }
-        });
-
-        return { results: uris };
-    };
-
-    var readUri = function (uriElement, baseURI) {
-        /// <summary>Deserializes an OData XML uri element.</summary>
-        /// <param name="uriElement">XML uri element.</param>
-        /// <param name="baseURI" type="String">Base URI for normalizing relative URIs found in the XML payload.</param>
-        /// <returns type="Object">A new object representing the uri.</returns>
-
-        var uri = xmlInnerText(uriElement) || "";
-        return { uri: normalizeURI(uri, baseURI) };
-    };
-
-    var xmlODataInferSpatialValueGeoJsonType = function (value, edmType) {
-        /// <summary>Infers the GeoJSON type from the spatial property value and the edm type name.</summary>
-        /// <param name="value" type="Object">Spatial property value in GeoJSON format.</param>
-        /// <param name="edmType" type="String" mayBeNull="true" optional="true">Spatial property edm type.<param>
-        /// <remarks>
-        ///   If the edmType parameter is null, undefined, "Edm.Geometry" or "Edm.Geography", then the function returns
-        ///   the GeoJSON type indicated by the value's type property.
-        ///
-        ///   If the edmType parameter is specified or is not one of the base spatial types, then it is used to
-        ///   determine the GeoJSON type and the value's type property is ignored.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the spatial value. </returns>
-
-        if (edmType === EDM_GEOMETRY || edmType === EDM_GEOGRAPHY) {
-            return value && value.type;
-        }
-
-        if (edmType === EDM_GEOMETRY_POINT || edmType === EDM_GEOGRAPHY_POINT) {
-            return GEOJSON_POINT;
-        }
-
-        if (edmType === EDM_GEOMETRY_LINESTRING || edmType === EDM_GEOGRAPHY_LINESTRING) {
-            return GEOJSON_LINESTRING;
-        }
-
-        if (edmType === EDM_GEOMETRY_POLYGON || edmType === EDM_GEOGRAPHY_POLYGON) {
-            return GEOJSON_POLYGON;
-        }
-
-        if (edmType === EDM_GEOMETRY_COLLECTION || edmType === EDM_GEOGRAPHY_COLLECTION) {
-            return GEOJSON_GEOMETRYCOLLECTION;
-        }
-
-        if (edmType === EDM_GEOMETRY_MULTIPOLYGON || edmType === EDM_GEOGRAPHY_MULTIPOLYGON) {
-            return GEOJSON_MULTIPOLYGON;
-        }
-
-        if (edmType === EDM_GEOMETRY_MULTILINESTRING || edmType === EDM_GEOGRAPHY_MULTILINESTRING) {
-            return GEOJSON_MULTILINESTRING;
-        }
-
-        if (edmType === EDM_GEOMETRY_MULTIPOINT || edmType === EDM_GEOGRAPHY_MULTIPOINT) {
-            return GEOJSON_MULTIPOINT;
-        }
-
-        djsassert(false, "gmlInferGeoJsonType - edm type <" + edmType + "> was unexpected!!");
-        return null;
-    };
-
-    var xmlNewODataMetaElement = function (dom, name, children) {
-        /// <summary>Creates a new DOM element in the OData metadata namespace.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Local name of the OData metadata element to create.</param>
-        /// <param name="children" type="Array">Array containing DOM nodes or string values that will be added as children of the new DOM element.</param>
-        /// <returns>New DOM element in the OData metadata namespace.</returns>
-        /// <remarks>
-        ///    If a value in the children collection is a string, then a new DOM text node is going to be created
-        ///    for it and then appended as a child of the new DOM Element.
-        /// </remarks>
-
-        return xmlNewElement(dom, odataMetaXmlNs, xmlQualifiedName(odataMetaPrefix, name), children);
-    };
-
-    var xmlNewODataMetaAttribute = function (dom, name, value) {
-        /// <summary>Creates a new DOM attribute in the odata namespace.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Local name of the OData attribute to create.</param>
-        /// <param name="value">Attribute value.</param>
-        /// <returns>New DOM attribute in the odata namespace.</returns>
-
-        return xmlNewAttribute(dom, odataMetaXmlNs, xmlQualifiedName(odataMetaPrefix, name), value);
-    };
-
-    var xmlNewODataElement = function (dom, name, children) {
-        /// <summary>Creates a new DOM element in the OData namespace.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Local name of the OData element to create.</param>
-        /// <param name="children" type="Array">Array containing DOM nodes or string values that will be added as children of the new DOM element.</param>
-        /// <returns>New DOM element in the OData namespace.</returns>
-        /// <remarks>
-        ///    If a value in the children collection is a string, then a new DOM text node is going to be created
-        ///    for it and then appended as a child of the new DOM Element.
-        /// </remarks>
-
-        return xmlNewElement(dom, odataXmlNs, xmlQualifiedName(odataPrefix, name), children);
-    };
-
-    var xmlNewODataPrimitiveValue = function (value, typeName) {
-        /// <summary>Returns the string representation of primitive value for an OData XML document.</summary>
-        /// <param name="value">Primivite value to format.</param>
-        /// <param name="typeName" type="String" optional="true">Type name of the primitive value.</param>
-        /// <returns type="String">Formatted primitive value.</returns>
-
-        if (typeName === EDM_DATETIME || typeName === EDM_DATETIMEOFFSET || isDate(value)) {
-            return formatDateTimeOffset(value);
-        }
-        if (typeName === EDM_TIME) {
-            return formatDuration(value);
-        }
-        return value.toString();
-    };
-
-    var xmlNewODataElementInfo = function (domElement, dataServiceVersion) {
-        /// <summary>Creates an object that represents a new DOM element for an OData XML document and the data service version it requires.</summary>
-        /// <param name="domElement">New DOM element for an OData XML document.</param>
-        /// <param name="dataServiceVersion" type="String">Required data service version by the new DOM element.</param>
-        /// <returns type="Object">Object containing new DOM element and its required data service version.</returns>
-
-        return { element: domElement, dsv: dataServiceVersion };
-    };
-
-    var xmlNewODataProperty = function (dom, name, typeName, children) {
-        /// <summary>Creates a new DOM element for an entry property in an OData XML document.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Property name.</param>
-        /// <param name="typeName" type="String" optional="true">Property type name.</param>
-        /// <param name="children" type="Array">Array containing DOM nodes or string values that will be added as children of the new DOM element.</param>
-        /// <remarks>
-        ///    If a value in the children collection is a string, then a new DOM text node is going to be created
-        ///    for it and then appended as a child of the new DOM Element.
-        /// </remarks>
-        /// <returns>New DOM element in the OData namespace for the entry property.</returns>
-
-        var typeAttribute = typeName ? xmlNewODataMetaAttribute(dom, "type", typeName) : null;
-        var property = xmlNewODataElement(dom, name, typeAttribute);
-        return xmlAppendChildren(property, children);
-    };
-
-    var xmlNewODataEdmProperty = function (dom, name, value, typeName) {
-        /// <summary>Creates a new DOM element for an EDM property in an OData XML document.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Property name.</param>
-        /// <param name="value">Property value.</param>
-        /// <param name="typeName" type="String" optional="true">Property type name.</param>
-        /// <returns type="Object">
-        ///     Object containing the new DOM element in the OData namespace for the EDM property and the
-        ///     required data service version for this property.
-        /// </returns>
-
-        var propertyValue = xmlNewODataPrimitiveValue(value, typeName);
-        var property = xmlNewODataProperty(dom, name, typeName, propertyValue);
-        return xmlNewODataElementInfo(property, /*dataServiceVersion*/"1.0");
-    };
-
-    var xmlNewODataNullProperty = function (dom, name, typeName, model) {
-        /// <summary>Creates a new DOM element for a null property in an OData XML document.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Property name.</param>
-        /// <param name="typeName" type="String" optional="true">Property type name.</param>
-        /// <param name="model" type="Object" optional="true">Object describing an OData conceptual schema.</param>
-        /// <remarks>
-        ///     If no typeName is specified, then it will be assumed that this is a primitive type property.
-        /// </remarks>
-        /// <returns type="Object">
-        ///     Object containing the new DOM element in the OData namespace for the null property and the 
-        ///     required data service version for this property.
-        /// </returns>
-
-        var nullAttribute = xmlNewODataMetaAttribute(dom, "null", "true");
-        var property = xmlNewODataProperty(dom, name, typeName, nullAttribute);
-        var dataServiceVersion = lookupComplexType(typeName, model) ? "2.0" : "1.0";
-
-        return xmlNewODataElementInfo(property, dataServiceVersion);
-    };
-
-    var xmlNewODataCollectionProperty = function (dom, name, value, typeName, collectionMetadata, collectionModel, model) {
-        /// <summary>Creates a new DOM element for a collection property in an OData XML document.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Property name.</param>
-        /// <param name="value">Property value either as an array or an object representing a collection in the library's internal representation.</param>
-        /// <param name="typeName" type="String" optional="true">Property type name.</param>
-        /// <param name="collectionMetadata" type="Object" optional="true">Object containing metadata about the collection property.</param>
-        /// <param name="collectionModel" type="Object" optional="true">Object describing the collection property in an OData conceptual schema.</param>
-        /// <param name="model" type="Object" optional="true">Object describing an OData conceptual schema.</param>
-        /// <returns type="Object">
-        ///     Object containing the new DOM element in the OData namespace for the collection property and the
-        ///     required data service version for this property.
-        /// </returns>
-
-        var itemTypeName = getCollectionType(typeName);
-        var items = isArray(value) ? value : value.results;
-        var itemMetadata = typeName ? { type: itemTypeName} : {};
-        itemMetadata.properties = collectionMetadata.properties;
-
-        var xmlProperty = xmlNewODataProperty(dom, name, itemTypeName ? typeName : null);
-
-        var i, len;
-        for (i = 0, len = items.length; i < len; i++) {
-            var itemValue = items[i];
-            var item = xmlNewODataDataElement(dom, "element", itemValue, itemMetadata, collectionModel, model);
-
-            xmlAppendChild(xmlProperty, item.element);
-        }
-        return xmlNewODataElementInfo(xmlProperty, /*dataServiceVersion*/"3.0");
-    };
-
-    var xmlNewODataComplexProperty = function (dom, name, value, typeName, propertyMetadata, propertyModel, model) {
-        /// <summary>Creates a new DOM element for a complex type property in an OData XML document.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Property name.</param>
-        /// <param name="value">Property value as an object in the library's internal representation.</param>
-        /// <param name="typeName" type="String" optional="true">Property type name.</param>
-        /// <param name="propertyMetadata" type="Object" optional="true">Object containing metadata about the complex type property.</param>
-        /// <param name="propertyModel" type="Object" optional="true">Object describing the complex type property in an OData conceptual schema.</param>
-        /// <param name="model" type="Object" optional="true">Object describing an OData conceptual schema.</param>
-        /// <returns type="Object">
-        ///     Object containing the new DOM element in the OData namespace for the complex type property and the
-        ///     required data service version for this property.
-        /// </returns>
-
-        var xmlProperty = xmlNewODataProperty(dom, name, typeName);
-        var complexTypePropertiesMetadata = propertyMetadata.properties || {};
-        var complexTypeModel = lookupComplexType(typeName, model) || {};
-
-        var dataServiceVersion = "1.0";
-
-        for (var key in value) {
-            if (key !== "__metadata") {
-                var memberValue = value[key];
-                var memberModel = lookupProperty(complexTypeModel.property, key);
-                var memberMetadata = complexTypePropertiesMetadata[key] || {};
-                var member = xmlNewODataDataElement(dom, key, memberValue, memberMetadata, memberModel, model);
-
-                dataServiceVersion = maxVersion(dataServiceVersion, member.dsv);
-                xmlAppendChild(xmlProperty, member.element);
-            }
-        }
-        return xmlNewODataElementInfo(xmlProperty, dataServiceVersion);
-    };
-
-    var xmlNewODataSpatialProperty = function (dom, name, value, typeName, isGeography) {
-        /// <summary>Creates a new DOM element for an EDM spatial property in an OData XML document.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Property name.</param>
-        /// <param name="value" type="Object">GeoJSON object containing the property value.</param>
-        /// <param name="typeName" type="String" optional="true">Property type name.</param>
-        /// <returns type="Object">
-        ///     Object containing the new DOM element in the OData namespace for the EDM property and the
-        ///     required data service version for this property.
-        /// </returns>
-
-        var geoJsonType = xmlODataInferSpatialValueGeoJsonType(value, typeName);
-
-        var gmlRoot = gmlNewODataSpatialValue(dom, value, geoJsonType, isGeography);
-        var xmlProperty = xmlNewODataProperty(dom, name, typeName, gmlRoot);
-
-        return xmlNewODataElementInfo(xmlProperty, "3.0");
-    };
-
-    var xmlNewODataDataElement = function (dom, name, value, dataItemMetadata, dataItemModel, model) {
-        /// <summary>Creates a new DOM element for a data item in an entry, complex property, or collection property.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Data item name.</param>
-        /// <param name="value" optional="true" mayBeNull="true">Value of the data item, if any.</param>
-        /// <param name="dataItemMetadata" type="Object" optional="true">Object containing metadata about the data item.</param>
-        /// <param name="dataItemModel" type="Object" optional="true">Object describing the data item in an OData conceptual schema.</param>
-        /// <param name="model" type="Object" optional="true">Object describing an OData conceptual schema.</param>
-        /// <returns type="Object">
-        ///     Object containing the new DOM element in the appropriate namespace for the data item and the
-        ///     required data service version for it.
-        /// </returns>
-
-        var typeName = dataItemTypeName(value, dataItemMetadata, dataItemModel);
-        if (isPrimitive(value)) {
-            return xmlNewODataEdmProperty(dom, name, value, typeName || EDM_STRING);
-        }
-
-        var isGeography = isGeographyEdmType(typeName);
-        if (isGeography || isGeometryEdmType(typeName)) {
-            return xmlNewODataSpatialProperty(dom, name, value, typeName, isGeography);
-        }
-
-        if (isCollection(value, typeName)) {
-            return xmlNewODataCollectionProperty(dom, name, value, typeName, dataItemMetadata, dataItemModel, model);
-        }
-
-        if (isNamedStream(value)) {
-            return null;
-        }
-
-        // This may be a navigation property.
-        var navPropKind = navigationPropertyKind(value, dataItemModel);
-        if (navPropKind !== null) {
-            return null;
-        }
-
-        if (value === null) {
-            return xmlNewODataNullProperty(dom, name, typeName);
-        }
-
-        djsassert(isObject(value), "xmlNewODataEntryProperty - property '" + name + "' is not an object");
-        return xmlNewODataComplexProperty(dom, name, value, typeName, dataItemMetadata, dataItemModel, model);
-    };
-
-    var odataNewLinkDocument = function (data) {
-        /// <summary>Writes the specified data into an OData XML document.</summary>
-        /// <param name="data">Data to write.</param>
-        /// <returns>The root of the DOM tree built.</returns>
-
-        if (data && isObject(data)) {
-            var dom = xmlDom();
-            return xmlAppendChild(dom, xmlNewODataElement(dom, "uri", data.uri));
-        }
-        // Allow for undefined to be returned.
-    };
-
-    var xmlParser = function (handler, text) {
-        /// <summary>Parses an OData XML document.</summary>
-        /// <param name="handler">This handler.</param>
-        /// <param name="text" type="String">Document text.</param>
-        /// <returns>An object representation of the document; undefined if not applicable.</returns>
-
-        if (text) {
-            var doc = xmlParse(text);
-            var root = xmlFirstChildElement(doc);
-            if (root) {
-                return readODataXmlDocument(root);
-            }
-        }
-
-        // Allow for undefined to be returned.
-    };
-
-    var xmlSerializer = function (handler, data, context) {
-        /// <summary>Serializes an OData XML object into a document.</summary>
-        /// <param name="handler">This handler.</param>
-        /// <param name="data" type="Object">Representation of feed or entry.</param>
-        /// <param name="context" type="Object">Object with parsing context.</param>
-        /// <returns>A text representation of the data object; undefined if not applicable.</returns>
-
-        var cType = context.contentType = context.contentType || contentType(xmlMediaType);
-        if (cType && cType.mediaType === xmlMediaType) {
-            return xmlSerialize(odataNewLinkDocument(data));
-        }
-        return undefined;
-    };
-
-    odata.xmlHandler = handler(xmlParser, xmlSerializer, xmlMediaType, MAX_DATA_SERVICE_VERSION);
-
-    // DATAJS INTERNAL START
-    odata.adoDs = adoDs;
-    odata.createAttributeExtension = createAttributeExtension;
-    odata.createElementExtension = createElementExtension;
-    odata.edmxNs = edmxNs;
-    odata.edmNs1 = edmNs1;
-    odata.edmNs1_1 = edmNs1_1;
-    odata.edmNs1_2 = edmNs1_2
-    odata.edmNs2a = edmNs2a;
-    odata.edmNs2b = edmNs2b;
-    odata.edmNs3 = edmNs3;
-    odata.odataMetaXmlNs = odataMetaXmlNs;
-    odata.odataMetaPrefix = odataMetaPrefix;
-    odata.odataXmlNs = odataXmlNs;
-    odata.odataPrefix = odataPrefix;
-    odata.odataScheme = odataScheme;
-    odata.odataRelatedPrefix = odataRelatedPrefix;
-    odata.xmlNewODataElement = xmlNewODataElement;
-    odata.xmlNewODataElementInfo = xmlNewODataElementInfo;
-    odata.xmlNewODataMetaAttribute = xmlNewODataMetaAttribute;
-    odata.xmlNewODataMetaElement = xmlNewODataMetaElement;
-    odata.xmlNewODataDataElement = xmlNewODataDataElement;
-    odata.xmlReadODataEdmPropertyValue = xmlReadODataEdmPropertyValue;
-    odata.xmlReadODataProperty = xmlReadODataProperty;
-
-    // DATAJS INTERNAL END
-
-    // CONTENT END
-})(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f1cfcbc5/datajs/src/odata.js
----------------------------------------------------------------------
diff --git a/datajs/src/odata.js b/datajs/src/odata.js
deleted file mode 100644
index 98b80e2..0000000
--- a/datajs/src/odata.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal  in the Software without restriction, including without limitation the rights  to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-// WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// odata.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-    var odata = window.OData || {};
-
-    // Imports
-
-    var assigned = datajs.assigned;
-    var defined = datajs.defined;
-    var throwErrorCallback = datajs.throwErrorCallback;
-
-    var invokeRequest = odata.invokeRequest;
-    var MAX_DATA_SERVICE_VERSION = odata.MAX_DATA_SERVICE_VERSION;
-    var prepareRequest = odata.prepareRequest;
-    var metadataParser = odata.metadataParser;
-
-    // CONTENT START
-
-    var handlers = [odata.jsonHandler, odata.atomHandler, odata.xmlHandler, odata.textHandler];
-
-    var dispatchHandler = function (handlerMethod, requestOrResponse, context) {
-        /// <summary>Dispatches an operation to handlers.</summary>
-        /// <param name="handlerMethod" type="String">Name of handler method to invoke.</param>
-        /// <param name="requestOrResponse" type="Object">request/response argument for delegated call.</param>
-        /// <param name="context" type="Object">context argument for delegated call.</param>
-
-        var i, len;
-        for (i = 0, len = handlers.length; i < len && !handlers[i][handlerMethod](requestOrResponse, context); i++) {
-        }
-
-        if (i === len) {
-            throw { message: "no handler for data" };
-        }
-    };
-
-    odata.defaultSuccess = function (data) {
-        /// <summary>Default success handler for OData.</summary>
-        /// <param name="data">Data to process.</param>
-
-        window.alert(window.JSON.stringify(data));
-    };
-
-    odata.defaultError = throwErrorCallback;
-
-    odata.defaultHandler = {
-        read: function (response, context) {
-            /// <summary>Reads the body of the specified response by delegating to JSON and ATOM handlers.</summary>
-            /// <param name="response">Response object.</param>
-            /// <param name="context">Operation context.</param>
-
-            if (response && assigned(response.body) && response.headers["Content-Type"]) {
-                dispatchHandler("read", response, context);
-            }
-        },
-
-        write: function (request, context) {
-            /// <summary>Write the body of the specified request by delegating to JSON and ATOM handlers.</summary>
-            /// <param name="request">Reques tobject.</param>
-            /// <param name="context">Operation context.</param>
-
-            dispatchHandler("write", request, context);
-        },
-
-        maxDataServiceVersion: MAX_DATA_SERVICE_VERSION,
-        accept: "application/atomsvc+xml;q=0.8, application/json;odata=fullmetadata;q=0.7, application/json;q=0.5, */*;q=0.1"
-    };
-
-    odata.defaultMetadata = [];
-
-    odata.read = function (urlOrRequest, success, error, handler, httpClient, metadata) {
-        /// <summary>Reads data from the specified URL.</summary>
-        /// <param name="urlOrRequest">URL to read data from.</param>
-        /// <param name="success" type="Function" optional="true">Callback for a successful read operation.</param>
-        /// <param name="error" type="Function" optional="true">Callback for handling errors.</param>
-        /// <param name="handler" type="Object" optional="true">Handler for data serialization.</param>
-        /// <param name="httpClient" type="Object" optional="true">HTTP client layer.</param>
-        /// <param name="metadata" type="Object" optional="true">Conceptual metadata for this request.</param>
-
-        var request;
-        if (urlOrRequest instanceof String || typeof urlOrRequest === "string") {
-            request = { requestUri: urlOrRequest };
-        } else {
-            request = urlOrRequest;
-        }
-
-        return odata.request(request, success, error, handler, httpClient, metadata);
-    };
-
-    odata.request = function (request, success, error, handler, httpClient, metadata) {
-        /// <summary>Sends a request containing OData payload to a server.</summary>
-        /// <param name="request" type="Object">Object that represents the request to be sent.</param>
-        /// <param name="success" type="Function" optional="true">Callback for a successful read operation.</param>
-        /// <param name="error" type="Function" optional="true">Callback for handling errors.</param>
-        /// <param name="handler" type="Object" optional="true">Handler for data serialization.</param>
-        /// <param name="httpClient" type="Object" optional="true">HTTP client layer.</param>
-        /// <param name="metadata" type="Object" optional="true">Conceptual metadata for this request.</param>
-
-        success = success || odata.defaultSuccess;
-        error = error || odata.defaultError;
-        handler = handler || odata.defaultHandler;
-        httpClient = httpClient || odata.defaultHttpClient;
-        metadata = metadata || odata.defaultMetadata;
-
-        // Augment the request with additional defaults.
-        request.recognizeDates = defined(request.recognizeDates, odata.jsonHandler.recognizeDates);
-        request.callbackParameterName = defined(request.callbackParameterName, odata.defaultHttpClient.callbackParameterName);
-        request.formatQueryString = defined(request.formatQueryString, odata.defaultHttpClient.formatQueryString);
-        request.enableJsonpCallback = defined(request.enableJsonpCallback, odata.defaultHttpClient.enableJsonpCallback);
-        request.useJsonLight = defined(request.useJsonLight, odata.jsonHandler.enableJsonpCallback);
-        request.inferJsonLightFeedAsObject = defined(request.inferJsonLightFeedAsObject, odata.jsonHandler.inferJsonLightFeedAsObject);
-
-        // Create the base context for read/write operations, also specifying complete settings.
-        var context = {
-            metadata: metadata,
-            recognizeDates: request.recognizeDates,
-            callbackParameterName: request.callbackParameterName,
-            formatQueryString: request.formatQueryString,
-            enableJsonpCallback: request.enableJsonpCallback,
-            useJsonLight: request.useJsonLight,
-            inferJsonLightFeedAsObject: request.inferJsonLightFeedAsObject
-        };
-
-        try {
-            prepareRequest(request, handler, context);
-            return invokeRequest(request, success, error, handler, httpClient, context);
-        } catch (err) {
-            error(err);
-        }
-    };
-
-    odata.parseMetadata = function (csdlMetadataDocument) {
-        /// <summary>Parses the csdl metadata to DataJS metatdata format. This method can be used when the metadata is retrieved using something other than DataJS</summary>
-        /// <param name="atomMetadata" type="string">A string that represents the entire csdl metadata.</param>
-        /// <returns type="Object">An object that has the representation of the metadata in Datajs format.</returns>
-
-        return metadataParser(null, csdlMetadataDocument);
-    };
-
-    // Configure the batch handler to use the default handler for the batch parts.
-    odata.batchHandler.partHandler = odata.defaultHandler;
-
-    // CONTENT END
-})(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f1cfcbc5/datajs/src/store-dom.js
----------------------------------------------------------------------
diff --git a/datajs/src/store-dom.js b/datajs/src/store-dom.js
deleted file mode 100644
index bf8a887..0000000
--- a/datajs/src/store-dom.js
+++ /dev/null
@@ -1,320 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation 
-// files (the "Software"), to deal  in the Software without restriction, including without limitation the rights  to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the 
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-// WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// store-dom.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-
-    // Imports.
-    var throwErrorCallback = datajs.throwErrorCallback;
-    var delay = datajs.delay;
-
-    // CONTENT START
-
-    var localStorage = null;
-
-    var domStoreDateToJSON = function () {
-        /// <summary>Converts a Date object into an object representation friendly to JSON serialization.</summary>
-        /// <returns type="Object">Object that represents the Date.</returns>
-        /// <remarks>
-        ///   This method is used to override the Date.toJSON method and is called only by
-        ///   JSON.stringify.  It should never be called directly.
-        /// </remarks>
-
-        var newValue = { v: this.valueOf(), t: "[object Date]" };
-        // Date objects might have extra properties on them so we save them.
-        for (var name in this) {
-            newValue[name] = this[name];
-        }
-        return newValue;
-    };
-
-    var domStoreJSONToDate = function (_, value) {
-        /// <summary>JSON reviver function for converting an object representing a Date in a JSON stream to a Date object</summary>
-        /// <param value="Object">Object to convert.</param>
-        /// <returns type="Date">Date object.</returns>
-        /// <remarks>
-        ///   This method is used during JSON parsing and invoked only by the reviver function.
-        ///   It should never be called directly.
-        /// </remarks>
-
-        if (value && value.t === "[object Date]") {
-            var newValue = new Date(value.v);
-            for (var name in value) {
-                if (name !== "t" && name !== "v") {
-                    newValue[name] = value[name];
-                }
-            }
-            value = newValue;
-        }
-        return value;
-    };
-
-    var qualifyDomStoreKey = function (store, key) {
-        /// <summary>Qualifies the key with the name of the store.</summary>
-        /// <param name="store" type="Object">Store object whose name will be used for qualifying the key.</param>
-        /// <param name="key" type="String">Key string.</param>
-        /// <returns type="String">Fully qualified key string.</returns>
-
-        return store.name + "#!#" + key;
-    };
-
-    var unqualifyDomStoreKey = function (store, key) {
-        /// <summary>Gets the key part of a fully qualified key string.</summary>
-        /// <param name="store" type="Object">Store object whose name will be used for qualifying the key.</param>
-        /// <param name="key" type="String">Fully qualified key string.</param>
-        /// <returns type="String">Key part string</returns>
-
-        return key.replace(store.name + "#!#", "");
-    };
-
-    var DomStore = function (name) {
-        /// <summary>Constructor for store objects that use DOM storage as the underlying mechanism.</summary>
-        /// <param name="name" type="String">Store name.</param>
-        this.name = name;
-    };
-
-    DomStore.create = function (name) {
-        /// <summary>Creates a store object that uses DOM Storage as its underlying mechanism.</summary>
-        /// <param name="name" type="String">Store name.</param>
-        /// <returns type="Object">Store object.</returns>
-
-        if (DomStore.isSupported()) {
-            localStorage = localStorage || window.localStorage;
-            return new DomStore(name);
-        }
-
-        throw { message: "Web Storage not supported by the browser" };
-    };
-
-    DomStore.isSupported = function () {
-        /// <summary>Checks whether the underlying mechanism for this kind of store objects is supported by the browser.</summary>
-        /// <returns type="Boolean">True if the mechanism is supported by the browser; otherwise false.</summary>
-        return !!window.localStorage;
-    };
-
-    DomStore.prototype.add = function (key, value, success, error) {
-        /// <summary>Adds a new value identified by a key to the store.</summary>
-        /// <param name="key" type="String">Key string.</param>
-        /// <param name="value">Value that is going to be added to the store.</param>
-        /// <param name="success" type="Function" optional="no">Callback for a successful add operation.</param>
-        /// <param name="error" type="Function" optional="yes">Callback for handling errors. If not specified then store.defaultError is invoked.</param>
-        /// <remarks>
-        ///    This method errors out if the store already contains the specified key.
-        /// </remarks>
-
-        error = error || this.defaultError;
-        var store = this;
-        this.contains(key, function (contained) {
-            if (!contained) {
-                store.addOrUpdate(key, value, success, error);
-            } else {
-                delay(error, { message: "key already exists", key: key });
-            }
-        }, error);
-    };
-
-    DomStore.prototype.addOrUpdate = function (key, value, success, error) {
-        /// <summary>Adds or updates a value identified by a key to the store.</summary>
-        /// <param name="key" type="String">Key string.</param>
-        /// <param name="value">Value that is going to be added or updated to the store.</param>
-        /// <param name="success" type="Function" optional="no">Callback for a successful add or update operation.</param>
-        /// <param name="error" type="Function" optional="yes">Callback for handling errors. If not specified then store.defaultError is invoked.</param>
-        /// <remarks>
-        ///   This method will overwrite the key's current value if it already exists in the store; otherwise it simply adds the new key and value.
-        /// </remarks>
-
-        error = error || this.defaultError;
-
-        if (key instanceof Array) {
-            error({ message: "Array of keys not supported" });
-        } else {
-            var fullKey = qualifyDomStoreKey(this, key);
-            var oldDateToJSON = Date.prototype.toJSON;
-            try {
-                var storedValue = value;
-                if (storedValue !== undefined) {
-                    // Dehydrate using json
-                    Date.prototype.toJSON = domStoreDateToJSON;
-                    storedValue = window.JSON.stringify(value);
-                }
-                // Save the json string.
-                localStorage.setItem(fullKey, storedValue);
-                delay(success, key, value);
-            }
-            catch (e) {
-                if (e.code === 22 || e.number === 0x8007000E) {
-                    delay(error, { name: "QUOTA_EXCEEDED_ERR", error: e });
-                } else {
-                    delay(error, e);
-                }
-            }
-            finally {
-                Date.prototype.toJSON = oldDateToJSON;
-            }
-        }
-    };
-
-    DomStore.prototype.clear = function (success, error) {
-        /// <summary>Removes all the data associated with this store object.</summary>
-        /// <param name="success" type="Function" optional="no">Callback for a successful clear operation.</param>
-        /// <param name="error" type="Function" optional="yes">Callback for handling errors. If not specified then store.defaultError is invoked.</param>
-        /// <remarks>
-        ///    In case of an error, this method will not restore any keys that might have been deleted at that point.
-        /// </remarks>
-
-        error = error || this.defaultError;
-        try {
-            var i = 0, len = localStorage.length;
-            while (len > 0 && i < len) {
-                var fullKey = localStorage.key(i);
-                var key = unqualifyDomStoreKey(this, fullKey);
-                if (fullKey !== key) {
-                    localStorage.removeItem(fullKey);
-                    len = localStorage.length;
-                } else {
-                    i++;
-                }
-            }
-            delay(success);
-        }
-        catch (e) {
-            delay(error, e);
-        }
-    };
-
-    DomStore.prototype.close = function () {
-        /// <summary>This function does nothing in DomStore as it does not have a connection model</summary>
-    };
-
-    DomStore.prototype.contains = function (key, success, error) {
-        /// <summary>Checks whether a key exists in the store.</summary>
-        /// <param name="key" type="String">Key string.</param>
-        /// <param name="success" type="Function" optional="no">Callback indicating whether the store contains the key or not.</param>
-        /// <param name="error" type="Function" optional="yes">Callback for handling errors. If not specified then store.defaultError is invoked.</param>
-        error = error || this.defaultError;
-        try {
-            var fullKey = qualifyDomStoreKey(this, key);
-            var value = localStorage.getItem(fullKey);
-            delay(success, value !== null);
-        } catch (e) {
-            delay(error, e);
-        }
-    };
-
-    DomStore.prototype.defaultError = throwErrorCallback;
-
-    DomStore.prototype.getAllKeys = function (success, error) {
-        /// <summary>Gets all the keys that exist in the store.</summary>
-        /// <param name="success" type="Function" optional="no">Callback for a successful get operation.</param>
-        /// <param name="error" type="Function" optional="yes">Callback for handling errors. If not specified then store.defaultError is invoked.</param>
-
-        error = error || this.defaultError;
-
-        var results = [];
-        var i, len;
-
-        try {
-            for (i = 0, len = localStorage.length; i < len; i++) {
-                var fullKey = localStorage.key(i);
-                var key = unqualifyDomStoreKey(this, fullKey);
-                if (fullKey !== key) {
-                    results.push(key);
-                }
-            }
-            delay(success, results);
-        }
-        catch (e) {
-            delay(error, e);
-        }
-    };
-
-    /// <summary>Identifies the underlying mechanism used by the store.</summary>
-    DomStore.prototype.mechanism = "dom";
-
-    DomStore.prototype.read = function (key, success, error) {
-        /// <summary>Reads the value associated to a key in the store.</summary>
-        /// <param name="key" type="String">Key string.</param>
-        /// <param name="success" type="Function" optional="no">Callback for a successful reads operation.</param>
-        /// <param name="error" type="Function" optional="yes">Callback for handling errors. If not specified then store.defaultError is invoked.</param>
-        error = error || this.defaultError;
-
-        if (key instanceof Array) {
-            error({ message: "Array of keys not supported" });
-        } else {
-            try {
-                var fullKey = qualifyDomStoreKey(this, key);
-                var value = localStorage.getItem(fullKey);
-                if (value !== null && value !== "undefined") {
-                    // Hydrate using json
-                    value = window.JSON.parse(value, domStoreJSONToDate);
-                }
-                else {
-                    value = undefined;
-                }
-                delay(success, key, value);
-            } catch (e) {
-                delay(error, e);
-            }
-        }
-    };
-
-    DomStore.prototype.remove = function (key, success, error) {
-        /// <summary>Removes a key and its value from the store.</summary>
-        /// <param name="key" type="String">Key string.</param>
-        /// <param name="success" type="Function" optional="no">Callback for a successful remove operation.</param>
-        /// <param name="error" type="Function" optional="yes">Callback for handling errors. If not specified then store.defaultError is invoked.</param>
-        error = error || this.defaultError;
-
-        if (key instanceof Array) {
-            error({ message: "Batches not supported" });
-        } else {
-            try {
-                var fullKey = qualifyDomStoreKey(this, key);
-                localStorage.removeItem(fullKey);
-                delay(success);
-            } catch (e) {
-                delay(error, e);
-            }
-        }
-    };
-
-    DomStore.prototype.update = function (key, value, success, error) {
-        /// <summary>Updates the value associated to a key in the store.</summary>
-        /// <param name="key" type="String">Key string.</param>
-        /// <param name="value">New value.</param>
-        /// <param name="success" type="Function" optional="no">Callback for a successful update operation.</param>
-        /// <param name="error" type="Function" optional="yes">Callback for handling errors. If not specified then store.defaultError is invoked.</param>
-        /// <remarks>
-        ///    This method errors out if the specified key is not found in the store.
-        /// </remarks>
-
-        error = error || this.defaultError;
-        var store = this;
-        this.contains(key, function (contained) {
-            if (contained) {
-                store.addOrUpdate(key, value, success, error);
-            } else {
-                delay(error, { message: "key not found", key: key });
-            }
-        }, error);
-    };
-
-    // DATAJS INTERNAL START
-    datajs.DomStore = DomStore;
-    // DATAJS INTERNAL END
-
-    // CONTENT END
-})(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f1cfcbc5/datajs/src/store-indexeddb.js
----------------------------------------------------------------------
diff --git a/datajs/src/store-indexeddb.js b/datajs/src/store-indexeddb.js
deleted file mode 100644
index b56828f..0000000
--- a/datajs/src/store-indexeddb.js
+++ /dev/null
@@ -1,417 +0,0 @@
-// Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation 
-// files (the "Software"), to deal  in the Software without restriction, including without limitation the rights  to use, copy,
-// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the 
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-// WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// store-indexeddb.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-
-    // Imports.
-    var throwErrorCallback = datajs.throwErrorCallback;
-    var delay = datajs.delay;
-
-    // CONTENT START
-
-    var indexedDB = window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.indexedDB;
-    var IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;
-    var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || {};
-
-    var IDBT_READ_ONLY = IDBTransaction.READ_ONLY || "readonly";
-    var IDBT_READ_WRITE = IDBTransaction.READ_WRITE || "readwrite";
-
-    var getError = function (error, defaultError) {
-        /// <summary>Returns either a specific error handler or the default error handler</summary>
-        /// <param name="error" type="Function">The specific error handler</param>
-        /// <param name="defaultError" type="Function">The default error handler</param>
-        /// <returns type="Function">The error callback</returns>
-
-        return function (e) {
-            var errorFunc = error || defaultError;
-            if (!errorFunc) {
-                return;
-            }
-
-            // Old api quota exceeded error support.
-            if (Object.prototype.toString.call(e) === "[object IDBDatabaseException]") {
-                if (e.code === 11 /* IndexedDb disk quota exceeded */) {
-                    errorFunc({ name: "QuotaExceededError", error: e });
-                    return;
-                }
-                errorFunc(e);
-                return;
-            }
-
-            var errName;
-            try {
-                var errObj = e.target.error || e;
-                errName = errObj.name;
-            } catch (ex) {
-                errName = (e.type === "blocked") ? "IndexedDBBlocked" : "UnknownError";
-            }
-            errorFunc({ name: errName, error: e });
-        };
-    };
-
-    var openStoreDb = function (store, success, error) {
-        /// <summary>Opens the store object's indexed db database.</summary>
-        /// <param name="store" type="IndexedDBStore">The store object</param>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-
-        var storeName = store.name;
-        var dbName = "_datajs_" + storeName;
-
-        var request = indexedDB.open(dbName);
-        request.onblocked = error;
-        request.onerror = error;
-
-        request.onupgradeneeded = function () {
-            var db = request.result;
-            if (!db.objectStoreNames.contains(storeName)) {
-                db.createObjectStore(storeName);
-            }
-        };
-
-        request.onsuccess = function (event) {
-            var db = request.result;
-            if (!db.objectStoreNames.contains(storeName)) {
-                // Should we use the old style api to define the database schema?
-                if ("setVersion" in db) {
-                    var versionRequest = db.setVersion("1.0");
-                    versionRequest.onsuccess = function () {
-                        var transaction = versionRequest.transaction;
-                        transaction.oncomplete = function () {
-                            success(db);
-                        };
-                        db.createObjectStore(storeName, null, false);
-                    };
-                    versionRequest.onerror = error;
-                    versionRequest.onblocked = error;
-                    return;
-                }
-
-                // The database doesn't have the expected store.
-                // Fabricate an error object for the event for the schema mismatch
-                // and error out.
-                event.target.error = { name: "DBSchemaMismatch" };
-                error(event);
-                return;
-            }
-
-            db.onversionchange = function(event) {
-                event.target.close();
-            };
-            success(db);
-        };
-    };
-
-    var openTransaction = function (store, mode, success, error) {
-        /// <summary>Opens a new transaction to the store</summary>
-        /// <param name="store" type="IndexedDBStore">The store object</param>
-        /// <param name="mode" type="Short">The read/write mode of the transaction (constants from IDBTransaction)</param>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-
-        var storeName = store.name;
-        var storeDb = store.db;
-        var errorCallback = getError(error, store.defaultError);
-
-        if (storeDb) {
-            success(storeDb.transaction(storeName, mode));
-            return;
-        }
-
-        openStoreDb(store, function (db) {
-            store.db = db;
-            success(db.transaction(storeName, mode));
-        }, errorCallback);
-    };
-
-    var IndexedDBStore = function (name) {
-        /// <summary>Creates a new IndexedDBStore.</summary>
-        /// <param name="name" type="String">The name of the store.</param>
-        /// <returns type="Object">The new IndexedDBStore.</returns>
-        this.name = name;
-    };
-
-    IndexedDBStore.create = function (name) {
-        /// <summary>Creates a new IndexedDBStore.</summary>
-        /// <param name="name" type="String">The name of the store.</param>
-        /// <returns type="Object">The new IndexedDBStore.</returns>
-        if (IndexedDBStore.isSupported()) {
-            return new IndexedDBStore(name);
-        }
-
-        throw { message: "IndexedDB is not supported on this browser" };
-    };
-
-    IndexedDBStore.isSupported = function () {
-        /// <summary>Returns whether IndexedDB is supported.</summary>
-        /// <returns type="Boolean">True if IndexedDB is supported, false otherwise.</returns>
-        return !!indexedDB;
-    };
-
-    IndexedDBStore.prototype.add = function (key, value, success, error) {
-        /// <summary>Adds a key/value pair to the store</summary>
-        /// <param name="key" type="String">The key</param>
-        /// <param name="value" type="Object">The value</param>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-        var name = this.name;
-        var defaultError = this.defaultError;
-        var keys = [];
-        var values = [];
-
-        if (key instanceof Array) {
-            keys = key;
-            values = value;
-        } else {
-            keys = [key];
-            values = [value];
-        }
-
-        openTransaction(this, IDBT_READ_WRITE, function (transaction) {
-            transaction.onabort = getError(error, defaultError, key, "add");
-            transaction.oncomplete = function () {
-                if (key instanceof Array) {
-                    success(keys, values);
-                } else {
-                    success(key, value);
-                }
-            };
-
-            for (var i = 0; i < keys.length && i < values.length; i++) {
-                transaction.objectStore(name).add({ v: values[i] }, keys[i]);
-            }
-        }, error);
-    };
-
-    IndexedDBStore.prototype.addOrUpdate = function (key, value, success, error) {
-        /// <summary>Adds or updates a key/value pair in the store</summary>
-        /// <param name="key" type="String">The key</param>
-        /// <param name="value" type="Object">The value</param>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-        var name = this.name;
-        var defaultError = this.defaultError;
-        var keys = [];
-        var values = [];
-
-        if (key instanceof Array) {
-            keys = key;
-            values = value;
-        } else {
-            keys = [key];
-            values = [value];
-        }
-
-        openTransaction(this, IDBT_READ_WRITE, function (transaction) {
-            transaction.onabort = getError(error, defaultError);
-            transaction.oncomplete = function () {
-                if (key instanceof Array) {
-                    success(keys, values);
-                } else {
-                    success(key, value);
-                }
-            };
-
-            for (var i = 0; i < keys.length && i < values.length; i++) {
-                var record = { v: values[i] };
-                transaction.objectStore(name).put(record, keys[i]);
-            }
-        }, error);
-    };
-
-    IndexedDBStore.prototype.clear = function (success, error) {
-        /// <summary>Clears the store</summary>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-        var name = this.name;
-        var defaultError = this.defaultError;
-        openTransaction(this, IDBT_READ_WRITE, function (transaction) {
-            transaction.onerror = getError(error, defaultError);
-            transaction.oncomplete = function () {
-                success();
-            };
-
-            transaction.objectStore(name).clear();
-        }, error);
-    };
-
-    IndexedDBStore.prototype.close = function () {
-        /// <summary>Closes the connection to the database</summary>
-        if (this.db) {
-            this.db.close();
-            this.db = null;
-        }
-    };
-
-    IndexedDBStore.prototype.contains = function (key, success, error) {
-        /// <summary>Returns whether the store contains a key</summary>
-        /// <param name="key" type="String">The key</param>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-        var name = this.name;
-        var defaultError = this.defaultError;
-        openTransaction(this, IDBT_READ_ONLY, function (transaction) {
-            var objectStore = transaction.objectStore(name);
-            var request = objectStore["get"](key);
-
-            transaction.oncomplete = function () {
-                success(!!request.result);
-            };
-            transaction.onerror = getError(error, defaultError);
-        }, error);
-    };
-
-    IndexedDBStore.prototype.defaultError = throwErrorCallback;
-
-    IndexedDBStore.prototype.getAllKeys = function (success, error) {
-        /// <summary>Gets all the keys from the store</summary>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-        var name = this.name;
-        var defaultError = this.defaultError;
-        openTransaction(this, IDBT_READ_WRITE, function (transaction) {
-            var results = [];
-
-            transaction.oncomplete = function () {
-                success(results);
-            };
-
-            var request = transaction.objectStore(name).openCursor();
-
-            request.onerror = getError(error, defaultError);
-            request.onsuccess = function (event) {
-                var cursor = event.target.result;
-                if (cursor) {
-                    results.push(cursor.key);
-                    // Some tools have issues because continue is a javascript reserved word.
-                    cursor["continue"].call(cursor);
-                }
-            };
-        }, error);
-    };
-
-    /// <summary>Identifies the underlying mechanism used by the store.</summary>
-    IndexedDBStore.prototype.mechanism = "indexeddb";
-
-    IndexedDBStore.prototype.read = function (key, success, error) {
-        /// <summary>Reads the value for the specified key</summary>
-        /// <param name="key" type="String">The key</param>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-        /// <remarks>If the key does not exist, the success handler will be called with value = undefined</remarks>
-        var name = this.name;
-        var defaultError = this.defaultError;
-        var keys = (key instanceof Array) ? key : [key];
-
-        openTransaction(this, IDBT_READ_ONLY, function (transaction) {
-            var values = [];
-
-            transaction.onerror = getError(error, defaultError, key, "read");
-            transaction.oncomplete = function () {
-                if (key instanceof Array) {
-                    success(keys, values);
-                } else {
-                    success(keys[0], values[0]);
-                }
-            };
-
-            for (var i = 0; i < keys.length; i++) {
-                // Some tools have issues because get is a javascript reserved word. 
-                var objectStore = transaction.objectStore(name);
-                var request = objectStore["get"].call(objectStore, keys[i]);
-                request.onsuccess = function (event) {
-                    var record = event.target.result;
-                    values.push(record ? record.v : undefined);
-                };
-            }
-        }, error);
-    };
-
-    IndexedDBStore.prototype.remove = function (key, success, error) {
-        /// <summary>Removes the specified key from the store</summary>
-        /// <param name="key" type="String">The key</param>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-        var name = this.name;
-        var defaultError = this.defaultError;
-        var keys = (key instanceof Array) ? key : [key];
-
-        openTransaction(this, IDBT_READ_WRITE, function (transaction) {
-            transaction.onerror = getError(error, defaultError);
-            transaction.oncomplete = function () {
-                success();
-            };
-
-            for (var i = 0; i < keys.length; i++) {
-                // Some tools have issues because continue is a javascript reserved word.
-                var objectStore = transaction.objectStore(name);
-                objectStore["delete"].call(objectStore, keys[i]);
-            }
-        }, error);
-    };
-
-    IndexedDBStore.prototype.update = function (key, value, success, error) {
-        /// <summary>Updates a key/value pair in the store</summary>
-        /// <param name="key" type="String">The key</param>
-        /// <param name="value" type="Object">The value</param>
-        /// <param name="success" type="Function">The success callback</param>
-        /// <param name="error" type="Function">The error callback</param>
-        var name = this.name;
-        var defaultError = this.defaultError;
-        var keys = [];
-        var values = [];
-
-        if (key instanceof Array) {
-            keys = key;
-            values = value;
-        } else {
-            keys = [key];
-            values = [value];
-        }
-
-        openTransaction(this, IDBT_READ_WRITE, function (transaction) {
-            transaction.onabort = getError(error, defaultError);
-            transaction.oncomplete = function () {
-                if (key instanceof Array) {
-                    success(keys, values);
-                } else {
-                    success(key, value);
-                }
-            };
-
-            for (var i = 0; i < keys.length && i < values.length; i++) {
-                var request = transaction.objectStore(name).openCursor(IDBKeyRange.only(keys[i]));
-                var record = { v: values[i] };
-                request.pair = { key: keys[i], value: record };
-                request.onsuccess = function (event) {
-                    var cursor = event.target.result;
-                    if (cursor) {
-                        cursor.update(event.target.pair.value);
-                    } else {
-                        transaction.abort();
-                    }
-                };
-            }
-        }, error);
-    };
-
-    // DATAJS INTERNAL START
-    datajs.IndexedDBStore = IndexedDBStore;
-    // DATAJS INTERNAL END
-
-    // CONTENT END
-})(this);
\ No newline at end of file