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:55 UTC

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

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f1cfcbc5/datajs/src/odata-gml.js
----------------------------------------------------------------------
diff --git a/datajs/src/odata-gml.js b/datajs/src/odata-gml.js
deleted file mode 100644
index 2bcf5f5..0000000
--- a/datajs/src/odata-gml.js
+++ /dev/null
@@ -1,831 +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-gml.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-    var odata = window.OData || {};
-
-    // Imports.
-
-    var contains = datajs.contains;
-    var djsassert = datajs.djsassert;
-    var http = datajs.http;
-    var isArray = datajs.isArray;
-    var xmlAppendChild = datajs.xmlAppendChild;
-    var xmlAttributeValue = datajs.xmlAttributeValue;
-    var xmlChildElements = datajs.xmlChildElements;
-    var xmlFirstChildElement = datajs.xmlFirstChildElement;
-    var xmlInnerText = datajs.xmlInnerText;
-    var xmlLocalName = datajs.xmlLocalName;
-    var xmlNamespaceURI = datajs.xmlNamespaceURI;
-    var xmlNewElement = datajs.xmlNewElement;
-    var xmlQualifiedName = datajs.xmlQualifiedName;
-    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;
-
-    // CONTENT START
-    var gmlOpenGis = http + "www.opengis.net";           // http://www.opengis.net
-    var gmlXmlNs = gmlOpenGis + "/gml";                 // http://www.opengis.net/gml
-    var gmlSrsPrefix = gmlOpenGis + "/def/crs/EPSG/0/"; // http://www.opengis.net/def/crs/EPSG/0/
-
-    var gmlPrefix = "gml";
-
-    var gmlCreateGeoJSONOBject = function (type, member, data) {
-        /// <summary>Creates a GeoJSON object with the specified type, member and value.</summary>
-        /// <param name="type" type="String">GeoJSON object type.</param>
-        /// <param name="member" type="String">Name for the data member in the GeoJSON object.</param>
-        /// <param name="data">Data to be contained by the GeoJSON object.</param>
-        /// <returns type="Object">GeoJSON object.</returns>
-
-        var result = { type: type };
-        result[member] = data;
-        return result;
-    };
-
-    var gmlSwapLatLong = function (coordinates) {
-        /// <summary>Swaps the longitude and latitude in the coordinates array.</summary>
-        /// <param name="coordinates" type="Array">Array of doubles descrbing a set of coordinates.</param>
-        /// <returns type="Array">Array of doubles with the latitude and longitude components swapped.</returns>
-
-        if (isArray(coordinates) && coordinates.length >= 2) {
-            var tmp = coordinates[0];
-            coordinates[0] = coordinates[1];
-            coordinates[1] = tmp;
-        }
-        return coordinates;
-    };
-
-    var gmlReadODataMultiItem = function (domElement, type, member, members, valueReader, isGeography) {
-        /// <summary>
-        ///    Reads a GML DOM element that represents a composite structure like a multi-point or a
-        ///    multi-geometry returnig its GeoJSON representation.
-        /// </summary>
-        /// <param name="domElement">GML DOM element.</param>
-        /// <param name="type" type="String">GeoJSON object type.</param>
-        /// <param name="member" type="String">Name for the child element representing a single item in the composite structure.</param>
-        /// <param name="members" type="String">Name for the child element representing a collection of items in the composite structure.</param>
-        /// <param name="valueReader" type="Function">Callback function invoked to get the coordinates of each item in the comoposite structure.</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 type="Object">GeoJSON object.</returns>
-
-        var coordinates = gmlReadODataMultiItemValue(domElement, member, members, valueReader, isGeography);
-        return gmlCreateGeoJSONOBject(type, "coordinates", coordinates);
-    };
-
-    var gmlReadODataMultiItemValue = function (domElement, member, members, valueReader, isGeography) {
-        /// <summary>
-        ///    Reads the value of a GML DOM element that represents a composite structure like a multi-point or a
-        ///    multi-geometry returnig its items.
-        /// </summary>
-        /// <param name="domElement">GML DOM element.</param>
-        /// <param name="type" type="String">GeoJSON object type.</param>
-        /// <param name="member" type="String">Name for the child element representing a single item in the composite structure.</param>
-        /// <param name="members" type="String">Name for the child element representing a collection of items in the composite structure.</param>
-        /// <param name="valueReader" type="Function">Callback function invoked to get the transformed value of each item in the comoposite structure.</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 type="Array">Array containing the transformed value of each item in the multi-item.</returns>
-
-        var items = [];
-
-        xmlChildElements(domElement, function (child) {
-            if (xmlNamespaceURI(child) !== gmlXmlNs) {
-                return;
-            }
-
-            var localName = xmlLocalName(child);
-
-            if (localName === member) {
-                var valueElement = xmlFirstChildElement(child, gmlXmlNs);
-                if (valueElement) {
-                    var value = valueReader(valueElement, isGeography);
-                    if (value) {
-                        items.push(value);
-                    }
-                }
-                return;
-            }
-
-            if (localName === members) {
-                xmlChildElements(child, function (valueElement) {
-                    if (xmlNamespaceURI(valueElement) !== gmlXmlNs) {
-                        return;
-                    }
-
-                    var value = valueReader(valueElement, isGeography);
-                    if (value) {
-                        items.push(value);
-                    }
-                });
-            }
-        });
-        return items;
-    };
-
-    var gmlReadODataCollection = function (domElement, isGeography) {
-        /// <summary>Reads a GML DOM element representing a multi-geometry returning its GeoJSON representation.</summary>
-        /// <param name="domElement">DOM element.</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 type="Object">MultiGeometry object in GeoJSON format.</returns>
-
-        var geometries = gmlReadODataMultiItemValue(domElement, "geometryMember", "geometryMembers", gmlReadODataSpatialValue, isGeography);
-        return gmlCreateGeoJSONOBject(GEOJSON_GEOMETRYCOLLECTION, "geometries", geometries);
-    };
-
-    var gmlReadODataLineString = function (domElement, isGeography) {
-        /// <summary>Reads a GML DOM element representing a line string returning its GeoJSON representation.</summary>
-        /// <param name="domElement">DOM element.</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 type="Object">LineString object in GeoJSON format.</returns>
-
-        return gmlCreateGeoJSONOBject(GEOJSON_LINESTRING, "coordinates", gmlReadODataLineValue(domElement, isGeography));
-    };
-
-    var gmlReadODataMultiLineString = function (domElement, isGeography) {
-        /// <summary>Reads a GML DOM element representing a multi-line string returning its GeoJSON representation.</summary>
-        /// <param name="domElement">DOM element.</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 type="Object">MultiLineString object in GeoJSON format.</returns>
-
-        return gmlReadODataMultiItem(domElement, GEOJSON_MULTILINESTRING, "curveMember", "curveMembers", gmlReadODataLineValue, isGeography);
-    };
-
-    var gmlReadODataMultiPoint = function (domElement, isGeography) {
-        /// <summary>Reads a GML DOM element representing a multi-point returning its GeoJSON representation.</summary>
-        /// <param name="domElement">DOM element.</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 type="Object">MultiPoint object in GeoJSON format.</returns>
-
-        return gmlReadODataMultiItem(domElement, GEOJSON_MULTIPOINT, "pointMember", "pointMembers", gmlReadODataPointValue, isGeography);
-    };
-
-    var gmlReadODataMultiPolygon = function (domElement, isGeography) {
-        /// <summary>Reads a GML DOM element representing a multi-polygon returning its GeoJSON representation.</summary>
-        /// <param name="domElement">DOM element.</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 type="Object">MultiPolygon object in GeoJSON format.</returns>
-
-        return gmlReadODataMultiItem(domElement, GEOJSON_MULTIPOLYGON, "surfaceMember", "surfaceMembers", gmlReadODataPolygonValue, isGeography);
-    };
-
-    var gmlReadODataPoint = function (domElement, isGeography) {
-        /// <summary>Reads a GML DOM element representing a point returning its GeoJSON representation.</summary>
-        /// <param name="domElement">DOM element.</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 type="Object">Point object in GeoJSON format.</returns>
-
-        return gmlCreateGeoJSONOBject(GEOJSON_POINT, "coordinates", gmlReadODataPointValue(domElement, isGeography));
-    };
-
-    var gmlReadODataPolygon = function (domElement, isGeography) {
-        /// <summary>Reads a GML DOM element representing a polygon returning its GeoJSON representation.</summary>
-        /// <param name="domElement">DOM element.</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 type="Object">Polygon object in GeoJSON format.</returns>
-
-        return gmlCreateGeoJSONOBject(GEOJSON_POLYGON, "coordinates", gmlReadODataPolygonValue(domElement, isGeography));
-    };
-
-    var gmlReadODataLineValue = function (domElement, isGeography) {
-        /// <summary>Reads the value of a GML DOM element representing a line returning its set of coordinates.</summary>
-        /// <param name="domElement">DOM element.</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 type="Array">Array containing an array of doubles for each coordinate of the line.</returns>
-
-        var coordinates = [];
-
-        xmlChildElements(domElement, function (child) {
-            var nsURI = xmlNamespaceURI(child);
-
-            if (nsURI !== gmlXmlNs) {
-                return;
-            }
-
-            var localName = xmlLocalName(child);
-
-            if (localName === "posList") {
-                coordinates = gmlReadODataPosListValue(child, isGeography);
-                return;
-            }
-            if (localName === "pointProperty") {
-                coordinates.push(gmlReadODataPointWrapperValue(child, isGeography));
-                return;
-            }
-            if (localName === "pos") {
-                coordinates.push(gmlReadODataPosValue(child, isGeography));
-                return;
-            }
-        });
-
-        return coordinates;
-    };
-
-    var gmlReadODataPointValue = function (domElement, isGeography) {
-        /// <summary>Reads the value of a GML DOM element representing a point returning its coordinates.</summary>
-        /// <param name="domElement">DOM element.</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 type="Array">Array of doubles containing the point coordinates.</returns>
-
-        var pos = xmlFirstChildElement(domElement, gmlXmlNs, "pos");
-        return pos ? gmlReadODataPosValue(pos, isGeography) : [];
-    };
-
-    var gmlReadODataPointWrapperValue = function (domElement, isGeography) {
-        /// <summary>Reads the value of a GML DOM element wrapping an element representing a point returning its coordinates.</summary>
-        /// <param name="domElement">DOM element.</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 type="Array">Array of doubles containing the point coordinates.</returns>
-
-        var point = xmlFirstChildElement(domElement, gmlXmlNs, "Point");
-        return point ? gmlReadODataPointValue(point, isGeography) : [];
-    };
-
-    var gmlReadODataPolygonValue = function (domElement, isGeography) {
-        /// <summary>Reads the value of a GML DOM element representing a polygon returning its set of coordinates.</summary>
-        /// <param name="domElement">DOM element.</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 type="Array">Array containing an array of array of doubles for each ring of the polygon.</returns>
-
-        var coordinates = [];
-        var exteriorFound = false;
-        xmlChildElements(domElement, function (child) {
-            if (xmlNamespaceURI(child) !== gmlXmlNs) {
-                return;
-            }
-
-            // Only the exterior and the interior rings are interesting
-            var localName = xmlLocalName(child);
-            if (localName === "exterior") {
-                exteriorFound = true;
-                coordinates.unshift(gmlReadODataPolygonRingValue(child, isGeography));
-                return;
-            }
-            if (localName === "interior") {
-                coordinates.push(gmlReadODataPolygonRingValue(child, isGeography));
-                return;
-            }
-        });
-
-        if (!exteriorFound && coordinates.length > 0) {
-            // Push an empty exterior ring.
-            coordinates.unshift([[]]);
-        }
-
-        return coordinates;
-    };
-
-    var gmlReadODataPolygonRingValue = function (domElement, isGeography) {
-        /// <summary>Reads the value of a GML DOM element representing a linear ring in a GML Polygon element.</summary>
-        /// <param name="domElement">DOM element.</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 type="Array">Array containing an array of doubles for each coordinate of the linear ring.</returns>
-
-        var value = [];
-        xmlChildElements(domElement, function (child) {
-            if (xmlNamespaceURI(child) !== gmlXmlNs || xmlLocalName(child) !== "LinearRing") {
-                return;
-            }
-            value = gmlReadODataLineValue(child, isGeography);
-        });
-        return value;
-    };
-
-    var gmlReadODataPosListValue = function (domElement, isGeography) {
-        /// <summary>Reads the value of a GML DOM element representing a list of positions retruning its set of coordinates.</summary>
-        /// <param name="domElement">DOM element.</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.
-        ///
-        ///    The positions described by the list are assumed to be 2D, so 
-        ///    an exception will be thrown if the list has an odd number elements.
-        /// </remarks>
-        /// <returns type="Array">Array containing an array of doubles for each coordinate in the list.</returns>
-
-        var coordinates = gmlReadODataPosValue(domElement, false);
-        var len = coordinates.length;
-
-        if (len % 2 !== 0) {
-            throw { message: "GML posList element has an uneven number of numeric values" };
-        }
-
-        var value = [];
-        for (var i = 0; i < len; i += 2) {
-            var pos = coordinates.slice(i, i + 2);
-            value.push(isGeography ? gmlSwapLatLong(pos) : pos);
-        }
-        return value;
-    };
-
-    var gmlReadODataPosValue = function (domElement, isGeography) {
-        /// <summary>Reads the value of a GML element describing a position or a set of coordinates in an OData spatial property value.</summary>
-        /// <param name="property">DOM element for the GML element.</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 type="Array">Array of doubles containing the coordinates.</returns>
-
-        var value = [];
-        var delims = " \t\r\n";
-        var text = xmlInnerText(domElement);
-
-        if (text) {
-            var len = text.length;
-            var start = 0;
-            var end = 0;
-
-            while (end <= len) {
-                if (delims.indexOf(text.charAt(end)) !== -1) {
-                    var coord = text.substring(start, end);
-                    if (coord) {
-                        value.push(parseFloat(coord));
-                    }
-                    start = end + 1;
-                }
-                end++;
-            }
-        }
-
-        return isGeography ? gmlSwapLatLong(value) : value;
-    };
-
-    var gmlReadODataSpatialValue = function (domElement, isGeography) {
-        /// <summary>Reads the value of a GML DOM element a spatial value in an OData XML document.</summary>
-        /// <param name="domElement">DOM element.</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 position coordinates in the resulting GeoJSON object.
-        /// </remarks>
-        /// <returns type="Array">Array containing an array of doubles for each coordinate of the polygon.</returns>
-
-        var localName = xmlLocalName(domElement);
-        var reader;
-
-        switch (localName) {
-            case "Point":
-                reader = gmlReadODataPoint;
-                break;
-            case "Polygon":
-                reader = gmlReadODataPolygon;
-                break;
-            case "LineString":
-                reader = gmlReadODataLineString;
-                break;
-            case "MultiPoint":
-                reader = gmlReadODataMultiPoint;
-                break;
-            case "MultiCurve":
-                reader = gmlReadODataMultiLineString;
-                break;
-            case "MultiSurface":
-                reader = gmlReadODataMultiPolygon;
-                break;
-            case "MultiGeometry":
-                reader = gmlReadODataCollection;
-                break;
-            default:
-                throw { message: "Unsupported element: " + localName, element: domElement };
-        }
-
-        var value = reader(domElement, isGeography);
-        // Read the CRS
-        // WCF Data Services qualifies the srsName attribute withing the GML namespace; however
-        // other end points might no do this as per the standard.
-
-        var srsName = xmlAttributeValue(domElement, "srsName", gmlXmlNs) ||
-                      xmlAttributeValue(domElement, "srsName");
-
-        if (srsName) {
-            if (srsName.indexOf(gmlSrsPrefix) !== 0) {
-                throw { message: "Unsupported srs name: " + srsName, element: domElement };
-            }
-
-            var crsId = srsName.substring(gmlSrsPrefix.length);
-            if (crsId) {
-                value.crs = {
-                    type: "name",
-                    properties: {
-                        name: "EPSG:" + crsId
-                    }
-                };
-            }
-        }
-        return value;
-    };
-
-    var gmlNewODataSpatialValue = function (dom, value, type, isGeography) {
-        /// <summary>Creates a new GML DOM element for the value of an OData spatial property or GeoJSON object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">Spatial property value in GeoJSON format.</param>
-        /// <param name="type" type="String">String indicating the GeoJSON type of the value to serialize.</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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the spatial value. </returns>
-
-        var gmlWriter;
-
-        switch (type) {
-            case GEOJSON_POINT:
-                gmlWriter = gmlNewODataPoint;
-                break;
-            case GEOJSON_LINESTRING:
-                gmlWriter = gmlNewODataLineString;
-                break;
-            case GEOJSON_POLYGON:
-                gmlWriter = gmlNewODataPolygon;
-                break;
-            case GEOJSON_MULTIPOINT:
-                gmlWriter = gmlNewODataMultiPoint;
-                break;
-            case GEOJSON_MULTILINESTRING:
-                gmlWriter = gmlNewODataMultiLineString;
-                break;
-            case GEOJSON_MULTIPOLYGON:
-                gmlWriter = gmlNewODataMultiPolygon;
-                break;
-            case GEOJSON_GEOMETRYCOLLECTION:
-                gmlWriter = gmlNewODataGeometryCollection;
-                break;
-            default:
-                djsassert(false, "gmlNewODataSpatialValue - Unknown GeoJSON type <" + type + ">!!");
-                return null;
-        }
-
-        var gml = gmlWriter(dom, value, isGeography);
-
-        // Set the srsName attribute if applicable.
-        var crs = value.crs;
-        if (crs) {
-            if (crs.type === "name") {
-                var properties = crs.properties;
-                var name = properties && properties.name;
-                if (name && name.indexOf("ESPG:") === 0 && name.length > 5) {
-                    var crsId = name.substring(5);
-                    var srsName = xmlNewAttribute(dom, null, "srsName", gmlPrefix + crsId);
-                    xmlAppendChild(gml, srsName);
-                }
-            }
-        }
-
-        return gml;
-    };
-
-    var gmlNewODataElement = function (dom, name, children) {
-        /// <summary>Creates a new DOM element in the GML namespace.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Local name of the GML 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 GML 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, gmlXmlNs, xmlQualifiedName(gmlPrefix, name), children);
-    };
-
-    var gmlNewODataPosElement = function (dom, coordinates, isGeography) {
-        /// <summary>Creates a new GML pos DOM element.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="coordinates" type="Array">Array of doubles describing the coordinates of the pos element.</param>
-        /// <param name="isGeography" type="Boolean">Flag indicating if the coordinates use a geographic reference system or not.<param>
-        /// <remarks>
-        ///    When using a geographic reference system, the first coordinate is the Longitude and
-        ///    will be serialized as the second component of the <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New pos DOM element in the GML namespace.</returns>
-
-        var posValue = isArray(coordinates) ? coordinates : [];
-
-        // If using a geographic reference system, then the first coordinate is the longitude and it has to
-        // swapped with the latitude.
-        posValue = isGeography ? gmlSwapLatLong(posValue) : posValue;
-
-        return gmlNewODataElement(dom, "pos", posValue.join(" "));
-    };
-
-    var gmlNewODataLineElement = function (dom, name, coordinates, isGeography) {
-        /// <summary>Creates a new GML DOM element representing a line.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Name of the element to create.</param>
-        /// <param name="coordinates" type="Array">Array of array of doubles describing the coordinates of the line element.</param>
-        /// <param name="isGeography" type="Boolean">Flag indicating if the coordinates use a geographic reference system or not.<param>
-        /// <remarks>
-        ///    When using a geographic reference system, the first component of all the coordinates is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace.</returns>
-
-        var element = gmlNewODataElement(dom, name);
-        if (isArray(coordinates)) {
-            var i, len;
-            for (i = 0, len = coordinates.length; i < len; i++) {
-                xmlAppendChild(element, gmlNewODataPosElement(dom, coordinates[i], isGeography));
-            }
-
-            if (len === 0) {
-                xmlAppendChild(element, gmlNewODataElement(dom, "posList"));
-            }
-        }
-        return element;
-    };
-
-    var gmlNewODataPointElement = function (dom, coordinates, isGeography) {
-        /// <summary>Creates a new GML Point DOM element.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">GeoJSON Point object.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON Point.</returns>
-
-        return gmlNewODataElement(dom, "Point", gmlNewODataPosElement(dom, coordinates, isGeography));
-    };
-
-    var gmlNewODataLineStringElement = function (dom, coordinates, isGeography) {
-        /// <summary>Creates a new GML LineString DOM element.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="coordinates" type="Array">Array of array of doubles describing the coordinates of the line element.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON LineString.</returns>
-
-        return gmlNewODataLineElement(dom, "LineString", coordinates, isGeography);
-    };
-
-    var gmlNewODataPolygonRingElement = function (dom, name, coordinates, isGeography) {
-        /// <summary>Creates a new GML DOM element representing a polygon ring.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Name of the element to create.</param>
-        /// <param name="coordinates" type="Array">Array of array of doubles describing the coordinates of the polygon ring.</param>
-        /// <param name="isGeography" type="Boolean">Flag indicating if the coordinates use a geographic reference system or not.<param>
-        /// <remarks>
-        ///    When using a geographic reference system, the first component of all the coordinates is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace.</returns>
-
-        var ringElement = gmlNewODataElement(dom, name);
-        if (isArray(coordinates) && coordinates.length > 0) {
-            var linearRing = gmlNewODataLineElement(dom, "LinearRing", coordinates, isGeography);
-            xmlAppendChild(ringElement, linearRing);
-        }
-        return ringElement;
-    };
-
-    var gmlNewODataPolygonElement = function (dom, coordinates, isGeography) {
-        /// <summary>Creates a new GML Polygon DOM element for a GeoJSON Polygon object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="coordinates" type="Array">Array of array of array of doubles describing the coordinates of the polygon.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace.</returns>
-
-        var len = coordinates && coordinates.length;
-        var element = gmlNewODataElement(dom, "Polygon");
-
-        if (isArray(coordinates) && len > 0) {
-            xmlAppendChild(element, gmlNewODataPolygonRingElement(dom, "exterior", coordinates[0], isGeography));
-
-            var i;
-            for (i = 1; i < len; i++) {
-                xmlAppendChild(element, gmlNewODataPolygonRingElement(dom, "interior", coordinates[i], isGeography));
-            }
-        }
-        return element;
-    };
-
-    var gmlNewODataPoint = function (dom, value, isGeography) {
-        /// <summary>Creates a new GML Point DOM element for a GeoJSON Point object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">GeoJSON Point object.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON Point.</returns>
-
-        return gmlNewODataPointElement(dom, value.coordinates, isGeography);
-    };
-
-    var gmlNewODataLineString = function (dom, value, isGeography) {
-        /// <summary>Creates a new GML LineString DOM element for a GeoJSON LineString object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">GeoJSON LineString object.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON LineString.</returns>
-
-        return gmlNewODataLineStringElement(dom, value.coordinates, isGeography);
-    };
-
-    var gmlNewODataPolygon = function (dom, value, isGeography) {
-        /// <summary>Creates a new GML Polygon DOM element for a GeoJSON Polygon object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">GeoJSON Polygon object.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON Polygon.</returns>
-
-        return gmlNewODataPolygonElement(dom, value.coordinates, isGeography);
-    };
-
-    var gmlNewODataMultiItem = function (dom, name, members, items, itemWriter, isGeography) {
-        /// <summary>Creates a new GML DOM element for a composite structure like a multi-point or a multi-geometry.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="name" type="String">Name of the element to create.</param>
-        /// <param name="items" type="Array">Array of items in the composite structure.</param>
-        /// <param name="isGeography" type="Boolean">Flag indicating if the multi-item uses a geographic reference system or not.<param>
-        /// <remarks>
-        ///    When using a geographic reference system, the first component of all the coordinates in each of the items is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace.</returns>
-
-        var len = items && items.length;
-        var element = gmlNewODataElement(dom, name);
-
-        if (isArray(items) && len > 0) {
-            var membersElement = gmlNewODataElement(dom, members);
-            var i;
-            for (i = 0; i < len; i++) {
-                xmlAppendChild(membersElement, itemWriter(dom, items[i], isGeography));
-            }
-            xmlAppendChild(element, membersElement);
-        }
-        return element;
-    };
-
-    var gmlNewODataMultiPoint = function (dom, value, isGeography) {
-        /// <summary>Creates a new GML MultiPoint DOM element for a GeoJSON MultiPoint object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">GeoJSON MultiPoint object.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON MultiPoint.</returns>
-
-        return gmlNewODataMultiItem(dom, "MultiPoint", "pointMembers", value.coordinates, gmlNewODataPointElement, isGeography);
-    };
-
-    var gmlNewODataMultiLineString = function (dom, value, isGeography) {
-        /// <summary>Creates a new GML MultiCurve DOM element for a GeoJSON MultiLineString object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">GeoJSON MultiLineString object.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON MultiLineString.</returns>
-
-        return gmlNewODataMultiItem(dom, "MultiCurve", "curveMembers", value.coordinates, gmlNewODataLineStringElement, isGeography);
-    };
-
-    var gmlNewODataMultiPolygon = function (dom, value, isGeography) {
-        /// <summary>Creates a new GML MultiSurface DOM element for a GeoJSON MultiPolygon object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">GeoJSON MultiPolygon object.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON MultiPolygon.</returns>
-
-        return gmlNewODataMultiItem(dom, "MultiSurface", "surfaceMembers", value.coordinates, gmlNewODataPolygonElement, isGeography);
-    };
-
-    var gmlNewODataGeometryCollectionItem = function (dom, value, isGeography) {
-        /// <summary>Creates a new GML element for an item in a geometry collection object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="item" type="Object">GeoJSON object in the geometry collection.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace.</returns>
-
-        return gmlNewODataSpatialValue(dom, value, value.type, isGeography);
-    };
-
-    var gmlNewODataGeometryCollection = function (dom, value, isGeography) {
-        /// <summary>Creates a new GML MultiGeometry DOM element for a GeoJSON GeometryCollection object.</summary>
-        /// <param name="dom">DOM document used for creating the new DOM Element.</param>
-        /// <param name="value" type="Object">GeoJSON GeometryCollection object.</param>
-        /// <param name="isGeography" type="Boolean">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 the GeoJSON value is the Longitude and
-        ///    will be serialized as the second component of each <pos> element in the GML DOM tree.
-        /// </remarks>
-        /// <returns>New DOM element in the GML namespace for the GeoJSON GeometryCollection.</returns>
-
-        return gmlNewODataMultiItem(dom, "MultiGeometry", "geometryMembers", value.geometries, gmlNewODataGeometryCollectionItem, isGeography);
-    };
-
-    // DATAJS INTERNAL START
-    odata.gmlNewODataSpatialValue = gmlNewODataSpatialValue;
-    odata.gmlReadODataSpatialValue = gmlReadODataSpatialValue;
-    odata.gmlXmlNs = gmlXmlNs;
-    // 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-handler.js
----------------------------------------------------------------------
diff --git a/datajs/src/odata-handler.js b/datajs/src/odata-handler.js
deleted file mode 100644
index 5f83429..0000000
--- a/datajs/src/odata-handler.js
+++ /dev/null
@@ -1,276 +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-handler.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-    var odata = window.OData || {};
-
-    // Imports.
-    var assigned = datajs.assigned;
-    var extend = datajs.extend;
-    var trimString = datajs.trimString;
-
-    var maxVersion = odata.maxVersion;
-
-    // CONTENT START
-
-    var MAX_DATA_SERVICE_VERSION = "3.0";
-
-    var contentType = function (str) {
-        /// <summary>Parses a string into an object with media type and properties.</summary>
-        /// <param name="str" type="String">String with media type to parse.</param>
-        /// <returns>null if the string is empty; an object with 'mediaType' and a 'properties' dictionary otherwise.</returns>
-
-        if (!str) {
-            return null;
-        }
-
-        var contentTypeParts = str.split(";");
-        var properties = {};
-
-        var i, len;
-        for (i = 1, len = contentTypeParts.length; i < len; i++) {
-            var contentTypeParams = contentTypeParts[i].split("=");
-            properties[trimString(contentTypeParams[0])] = contentTypeParams[1];
-        }
-
-        return { mediaType: trimString(contentTypeParts[0]), properties: properties };
-    };
-
-    var contentTypeToString = function (contentType) {
-        /// <summary>Serializes an object with media type and properties dictionary into a string.</summary>
-        /// <param name="contentType">Object with media type and properties dictionary to serialize.</param>
-        /// <returns>String representation of the media type object; undefined if contentType is null or undefined.</returns>
-
-        if (!contentType) {
-            return undefined;
-        }
-
-        var result = contentType.mediaType;
-        var property;
-        for (property in contentType.properties) {
-            result += ";" + property + "=" + contentType.properties[property];
-        }
-        return result;
-    };
-
-    var createReadWriteContext = function (contentType, dataServiceVersion, context, handler) {
-        /// <summary>Creates an object that is going to be used as the context for the handler's parser and serializer.</summary>
-        /// <param name="contentType">Object with media type and properties dictionary.</param>
-        /// <param name="dataServiceVersion" type="String">String indicating the version of the protocol to use.</param>
-        /// <param name="context">Operation context.</param>
-        /// <param name="handler">Handler object that is processing a resquest or response.</param>
-        /// <returns>Context object.</returns>
-
-        var rwContext = {};
-        extend(rwContext, context);
-        extend(rwContext, {
-            contentType: contentType,
-            dataServiceVersion: dataServiceVersion,
-            handler: handler
-        });
-
-        return rwContext;
-    };
-
-    var fixRequestHeader = function (request, name, value) {
-        /// <summary>Sets a request header's value. If the header has already a value other than undefined, null or empty string, then this method does nothing.</summary>
-        /// <param name="request">Request object on which the header will be set.</param>
-        /// <param name="name" type="String">Header name.</param>
-        /// <param name="value" type="String">Header value.</param>
-        if (!request) {
-            return;
-        }
-
-        var headers = request.headers;
-        if (!headers[name]) {
-            headers[name] = value;
-        }
-    };
-
-    var fixDataServiceVersionHeader = function (request, version) {
-        /// <summary>Sets the DataServiceVersion header of the request if its value is not yet defined or of a lower version.</summary>
-        /// <param name="request">Request object on which the header will be set.</param>
-        /// <param name="version" type="String">Version value.</param>
-        /// <remarks>
-        /// If the request has already a version value higher than the one supplied the this function does nothing.
-        /// </remarks>
-
-        if (request) {
-            var headers = request.headers;
-            var dsv = headers["DataServiceVersion"];
-            headers["DataServiceVersion"] = dsv ? maxVersion(dsv, version) : version;
-        }
-    };
-
-    var getRequestOrResponseHeader = function (requestOrResponse, name) {
-        /// <summary>Gets the value of a request or response header.</summary>
-        /// <param name="requestOrResponse">Object representing a request or a response.</param>
-        /// <param name="name" type="String">Name of the header to retrieve.</param>
-        /// <returns type="String">String value of the header; undefined if the header cannot be found.</returns>
-
-        var headers = requestOrResponse.headers;
-        return (headers && headers[name]) || undefined;
-    };
-
-    var getContentType = function (requestOrResponse) {
-        /// <summary>Gets the value of the Content-Type header from a request or response.</summary>
-        /// <param name="requestOrResponse">Object representing a request or a response.</param>
-        /// <returns type="Object">Object with 'mediaType' and a 'properties' dictionary; null in case that the header is not found or doesn't have a value.</returns>
-
-        return contentType(getRequestOrResponseHeader(requestOrResponse, "Content-Type"));
-    };
-
-    var versionRE = /^\s?(\d+\.\d+);?.*$/;
-    var getDataServiceVersion = function (requestOrResponse) {
-        /// <summary>Gets the value of the DataServiceVersion header from a request or response.</summary>
-        /// <param name="requestOrResponse">Object representing a request or a response.</param>
-        /// <returns type="String">Data service version; undefined if the header cannot be found.</returns>
-
-        var value = getRequestOrResponseHeader(requestOrResponse, "DataServiceVersion");
-        if (value) {
-            var matches = versionRE.exec(value);
-            if (matches && matches.length) {
-                return matches[1];
-            }
-        }
-
-        // Fall through and return undefined.
-    };
-
-    var handlerAccepts = function (handler, cType) {
-        /// <summary>Checks that a handler can process a particular mime type.</summary>
-        /// <param name="handler">Handler object that is processing a resquest or response.</param>
-        /// <param name="cType">Object with 'mediaType' and a 'properties' dictionary.</param>
-        /// <returns type="Boolean">True if the handler can process the mime type; false otherwise.</returns>
-
-        // The following check isn't as strict because if cType.mediaType = application/; it will match an accept value of "application/xml";
-        // however in practice we don't not expect to see such "suffixed" mimeTypes for the handlers.
-        return handler.accept.indexOf(cType.mediaType) >= 0;
-    };
-
-    var handlerRead = function (handler, parseCallback, response, context) {
-        /// <summary>Invokes the parser associated with a handler for reading the payload of a HTTP response.</summary>
-        /// <param name="handler">Handler object that is processing the response.</param>
-        /// <param name="parseCallback" type="Function">Parser function that will process the response payload.</param>
-        /// <param name="response">HTTP response whose payload is going to be processed.</param>
-        /// <param name="context">Object used as the context for processing the response.</param>
-        /// <returns type="Boolean">True if the handler processed the response payload and the response.data property was set; false otherwise.</returns>
-
-        if (!response || !response.headers) {
-            return false;
-        }
-
-        var cType = getContentType(response);
-        var version = getDataServiceVersion(response) || "";
-        var body = response.body;
-
-        if (!assigned(body)) {
-            return false;
-        }
-
-        if (handlerAccepts(handler, cType)) {
-            var readContext = createReadWriteContext(cType, version, context, handler);
-            readContext.response = response;
-            response.data = parseCallback(handler, body, readContext);
-            return response.data !== undefined;
-        }
-
-        return false;
-    };
-
-    var handlerWrite = function (handler, serializeCallback, request, context) {
-        /// <summary>Invokes the serializer associated with a handler for generating the payload of a HTTP request.</summary>
-        /// <param name="handler">Handler object that is processing the request.</param>
-        /// <param name="serializeCallback" type="Function">Serializer function that will generate the request payload.</param>
-        /// <param name="response">HTTP request whose payload is going to be generated.</param>
-        /// <param name="context">Object used as the context for serializing the request.</param>
-        /// <returns type="Boolean">True if the handler serialized the request payload and the request.body property was set; false otherwise.</returns>
-        if (!request || !request.headers) {
-            return false;
-        }
-
-        var cType = getContentType(request);
-        var version = getDataServiceVersion(request);
-
-        if (!cType || handlerAccepts(handler, cType)) {
-            var writeContext = createReadWriteContext(cType, version, context, handler);
-            writeContext.request = request;
-
-            request.body = serializeCallback(handler, request.data, writeContext);
-
-            if (request.body !== undefined) {
-                fixDataServiceVersionHeader(request, writeContext.dataServiceVersion || "1.0");
-
-                fixRequestHeader(request, "Content-Type", contentTypeToString(writeContext.contentType));
-                fixRequestHeader(request, "MaxDataServiceVersion", handler.maxDataServiceVersion);
-                return true;
-            }
-        }
-
-        return false;
-    };
-
-    var handler = function (parseCallback, serializeCallback, accept, maxDataServiceVersion) {
-        /// <summary>Creates a handler object for processing HTTP requests and responses.</summary>
-        /// <param name="parseCallback" type="Function">Parser function that will process the response payload.</param>
-        /// <param name="serializeCallback" type="Function">Serializer function that will generate the request payload.</param>
-        /// <param name="accept" type="String">String containing a comma separated list of the mime types that this handler can work with.</param>
-        /// <param name="maxDataServiceVersion" type="String">String indicating the highest version of the protocol that this handler can work with.</param>
-        /// <returns type="Object">Handler object.</returns>
-
-        return {
-            accept: accept,
-            maxDataServiceVersion: maxDataServiceVersion,
-
-            read: function (response, context) {
-                return handlerRead(this, parseCallback, response, context);
-            },
-
-            write: function (request, context) {
-                return handlerWrite(this, serializeCallback, request, context);
-            }
-        };
-    };
-
-    var textParse = function (handler, body /*, context */) {
-        return body;
-    };
-
-    var textSerialize = function (handler, data /*, context */) {
-        if (assigned(data)) {
-            return data.toString();
-        } else {
-            return undefined;
-        }
-    };
-
-    odata.textHandler = handler(textParse, textSerialize, "text/plain", MAX_DATA_SERVICE_VERSION);
-
-    // DATAJS INTERNAL START
-    odata.contentType = contentType;
-    odata.contentTypeToString = contentTypeToString;
-    odata.handler = handler;
-    odata.createReadWriteContext = createReadWriteContext;
-    odata.fixRequestHeader = fixRequestHeader;
-    odata.getRequestOrResponseHeader = getRequestOrResponseHeader;
-    odata.getContentType = getContentType;
-    odata.getDataServiceVersion = getDataServiceVersion;
-    odata.MAX_DATA_SERVICE_VERSION = MAX_DATA_SERVICE_VERSION;
-    // DATAJS INTERNAL END
-
-    // CONTENT END
-})(this);
\ No newline at end of file