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

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

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f1cfcbc5/datajs/src/odata-json.js
----------------------------------------------------------------------
diff --git a/datajs/src/odata-json.js b/datajs/src/odata-json.js
deleted file mode 100644
index 8f11857..0000000
--- a/datajs/src/odata-json.js
+++ /dev/null
@@ -1,379 +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-json.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-    var odata = window.OData || {};
-
-    // Imports 
-
-    var defined = datajs.defined;
-    var extend = datajs.extend;
-    var isArray = datajs.isArray;
-    var isDate = datajs.isDate;
-    var normalizeURI = datajs.normalizeURI;
-    var parseInt10 = datajs.parseInt10;
-
-    var contentType = odata.contentType;
-    var jsonLightReadPayload = odata.jsonLightReadPayload;
-    var formatDateTimeOffset = odata.formatDateTimeOffset;
-    var formatDuration = odata.formatDuration;
-    var formatJsonLight = odata.formatJsonLight;
-    var formatNumberWidth = odata.formatNumberWidth;
-    var getCanonicalTimezone = odata.getCanonicalTimezone;
-    var handler = odata.handler;
-    var isComplex = odata.isComplex;
-    var lookupComplexType = odata.lookupComplexType;
-    var lookupEntityType = odata.lookupEntityType;
-    var MAX_DATA_SERVICE_VERSION = odata.MAX_DATA_SERVICE_VERSION;
-    var maxVersion = odata.maxVersion;
-    var parseDateTime = odata.parseDateTime;
-    var parseDuration = odata.parseDuration;
-    var parseTimezone = odata.parseTimezone;
-    var payloadTypeOf = odata.payloadTypeOf;
-    var traverse = odata.traverse;
-
-    // CONTENT START
-
-    var jsonMediaType = "application/json";
-    var jsonContentType = contentType(jsonMediaType);
-
-    var jsonReadAdvertisedActionsOrFunctions = function (value) {
-        /// <summary>Reads and object containing action or function metadata and maps them into a single array of objects.</summary>
-        /// <param name="value" type="Object">Object containing action or function metadata.</param>
-        /// <returns type="Array">Array of objects containing metadata for the actions or functions specified in value.</returns>
-
-        var result = [];
-        for (var name in value) {
-            var i, len;
-            for (i = 0, len = value[name].length; i < len; i++) {
-                result.push(extend({ metadata: name }, value[name][i]));
-            }
-        }
-        return result;
-    };
-
-    var jsonApplyMetadata = function (value, metadata, dateParser, recognizeDates) {
-        /// <summary>Applies metadata coming from both the payload and the metadata object to the value.</summary>
-        /// <param name="value" type="Object">Data on which the metada is going to be applied.</param>
-        /// <param name="metadata">Metadata store; one of edmx, schema, or an array of any of them.</param>
-        /// <param name="dateParser" type="function">Function used for parsing datetime values.</param>
-        /// <param name="recognizeDates" type="Boolean">
-        ///     True if strings formatted as datetime values should be treated as datetime values. False otherwise.
-        /// </param>
-        /// <returns type="Object">Transformed data.</returns>
-
-        if (value && typeof value === "object") {
-            var dataTypeName;
-            var valueMetadata = value.__metadata;
-
-            if (valueMetadata) {
-                if (valueMetadata.actions) {
-                    valueMetadata.actions = jsonReadAdvertisedActionsOrFunctions(valueMetadata.actions);
-                }
-                if (valueMetadata.functions) {
-                    valueMetadata.functions = jsonReadAdvertisedActionsOrFunctions(valueMetadata.functions);
-                }
-                dataTypeName = valueMetadata && valueMetadata.type;
-            }
-
-            var dataType = lookupEntityType(dataTypeName, metadata) || lookupComplexType(dataTypeName, metadata);
-            var propertyValue;
-            if (dataType) {
-                var properties = dataType.property;
-                if (properties) {
-                    var i, len;
-                    for (i = 0, len = properties.length; i < len; i++) {
-                        var property = properties[i];
-                        var propertyName = property.name;
-                        propertyValue = value[propertyName];
-
-                        if (property.type === "Edm.DateTime" || property.type === "Edm.DateTimeOffset") {
-                            if (propertyValue) {
-                                propertyValue = dateParser(propertyValue);
-                                if (!propertyValue) {
-                                    throw { message: "Invalid date/time value" };
-                                }
-                                value[propertyName] = propertyValue;
-                            }
-                        } else if (property.type === "Edm.Time") {
-                            value[propertyName] = parseDuration(propertyValue);
-                        }
-                    }
-                }
-            } else if (recognizeDates) {
-                for (var name in value) {
-                    propertyValue = value[name];
-                    if (typeof propertyValue === "string") {
-                        value[name] = dateParser(propertyValue) || propertyValue;
-                    }
-                }
-            }
-        }
-        return value;
-    };
-
-    var isJsonLight = function (contentType) {
-        /// <summary>Tests where the content type indicates a json light payload.</summary>
-        /// <param name="contentType">Object with media type and properties dictionary.</param>
-        /// <returns type="Boolean">True is the content type indicates a json light payload. False otherwise.</returns>
-
-        if (contentType) {
-            var odata = contentType.properties.odata;
-            return odata === "nometadata" || odata === "minimalmetadata" || odata === "fullmetadata";
-        }
-        return false;
-    };
-
-    var normalizeServiceDocument = function (data, baseURI) {
-        /// <summary>Normalizes a JSON service document to look like an ATOM service document.</summary>
-        /// <param name="data" type="Object">Object representation of service documents as deserialized.</param>
-        /// <param name="baseURI" type="String">Base URI to resolve relative URIs.</param>
-        /// <returns type="Object">An object representation of the service document.</returns>
-        var workspace = { collections: [] };
-
-        var i, len;
-        for (i = 0, len = data.EntitySets.length; i < len; i++) {
-            var title = data.EntitySets[i];
-            var collection = {
-                title: title,
-                href: normalizeURI(title, baseURI)
-            };
-
-            workspace.collections.push(collection);
-        }
-
-        return { workspaces: [workspace] };
-    };
-
-    // The regular expression corresponds to something like this:
-    // /Date(123+60)/
-    //
-    // This first number is date ticks, the + may be a - and is optional,
-    // with the second number indicating a timezone offset in minutes.
-    //
-    // On the wire, the leading and trailing forward slashes are
-    // escaped without being required to so the chance of collisions is reduced;
-    // however, by the time we see the objects, the characters already
-    // look like regular forward slashes.
-    var jsonDateRE = /^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/;
-
-    var minutesToOffset = function (minutes) {
-        /// <summary>Formats the given minutes into (+/-)hh:mm format.</summary>
-        /// <param name="minutes" type="Number">Number of minutes to format.</param>
-        /// <returns type="String">The minutes in (+/-)hh:mm format.</returns>
-
-        var sign;
-        if (minutes < 0) {
-            sign = "-";
-            minutes = -minutes;
-        } else {
-            sign = "+";
-        }
-
-        var hours = Math.floor(minutes / 60);
-        minutes = minutes - (60 * hours);
-
-        return sign + formatNumberWidth(hours, 2) + ":" + formatNumberWidth(minutes, 2);
-    };
-
-    var parseJsonDateString = function (value) {
-        /// <summary>Parses the JSON Date representation into a Date object.</summary>
-        /// <param name="value" type="String">String value.</param>
-        /// <returns type="Date">A Date object if the value matches one; falsy otherwise.</returns>
-
-        var arr = value && jsonDateRE.exec(value);
-        if (arr) {
-            // 0 - complete results; 1 - ticks; 2 - sign; 3 - minutes
-            var result = new Date(parseInt10(arr[1]));
-            if (arr[2]) {
-                var mins = parseInt10(arr[3]);
-                if (arr[2] === "-") {
-                    mins = -mins;
-                }
-
-                // The offset is reversed to get back the UTC date, which is
-                // what the API will eventually have.
-                var current = result.getUTCMinutes();
-                result.setUTCMinutes(current - mins);
-                result.__edmType = "Edm.DateTimeOffset";
-                result.__offset = minutesToOffset(mins);
-            }
-            if (!isNaN(result.valueOf())) {
-                return result;
-            }
-        }
-
-        // Allow undefined to be returned.
-    };
-
-    // Some JSON implementations cannot produce the character sequence \/
-    // which is needed to format DateTime and DateTimeOffset into the
-    // JSON string representation defined by the OData protocol.
-    // See the history of this file for a candidate implementation of
-    // a 'formatJsonDateString' function.
-
-    var jsonParser = function (handler, text, context) {
-        /// <summary>Parses a JSON OData payload.</summary>
-        /// <param name="handler">This handler.</param>
-        /// <param name="text">Payload text (this parser also handles pre-parsed objects).</param>
-        /// <param name="context" type="Object">Object with parsing context.</param>
-        /// <returns>An object representation of the OData payload.</returns>
-
-        var recognizeDates = defined(context.recognizeDates, handler.recognizeDates);
-        var inferJsonLightFeedAsObject = defined(context.inferJsonLightFeedAsObject, handler.inferJsonLightFeedAsObject);
-        var model = context.metadata;
-        var dataServiceVersion = context.dataServiceVersion;
-        var dateParser = parseJsonDateString;
-        var json = (typeof text === "string") ? window.JSON.parse(text) : text;
-
-        if ((maxVersion("3.0", dataServiceVersion) === dataServiceVersion)) {
-            if (isJsonLight(context.contentType)) {
-                return jsonLightReadPayload(json, model, recognizeDates, inferJsonLightFeedAsObject, context.contentType.properties.odata);
-            }
-            dateParser = parseDateTime;
-        }
-
-        json = traverse(json.d, function (key, value) {
-            return jsonApplyMetadata(value, model, dateParser, recognizeDates);
-        });
-
-        json = jsonUpdateDataFromVersion(json, context.dataServiceVersion);
-        return jsonNormalizeData(json, context.response.requestUri);
-    };
-
-    var jsonToString = function (data) {
-        /// <summary>Converts the data into a JSON string.</summary>
-        /// <param name="data">Data to serialize.</param>
-        /// <returns type="String">The JSON string representation of data.</returns>
-
-        var result; // = undefined;
-        // Save the current date.toJSON function
-        var dateToJSON = Date.prototype.toJSON;
-        try {
-            // Set our own date.toJSON function
-            Date.prototype.toJSON = function () {
-                return formatDateTimeOffset(this);
-            };
-            result = window.JSON.stringify(data, jsonReplacer);
-        } finally {
-            // Restore the original toJSON function
-            Date.prototype.toJSON = dateToJSON;
-        }
-        return result;
-    };
-
-    var jsonSerializer = function (handler, data, context) {
-        /// <summary>Serializes the data by returning its string representation.</summary>
-        /// <param name="handler">This handler.</param>
-        /// <param name="data">Data to serialize.</param>
-        /// <param name="context" type="Object">Object with serialization context.</param>
-        /// <returns type="String">The string representation of data.</returns>
-
-        var dataServiceVersion = context.dataServiceVersion || "1.0";
-        var useJsonLight = defined(context.useJsonLight, handler.useJsonLight);
-        var cType = context.contentType = context.contentType || jsonContentType;
-
-        if (cType && cType.mediaType === jsonContentType.mediaType) {
-            var json = data;
-            if (useJsonLight || isJsonLight(cType)) {
-                context.dataServiceVersion = maxVersion(dataServiceVersion, "3.0");
-                json = formatJsonLight(data, context);
-                return jsonToString(json);
-            }
-            if (maxVersion("3.0", dataServiceVersion) === dataServiceVersion) {
-                cType.properties.odata = "verbose";
-                context.contentType = cType;
-            }
-            return jsonToString(json);
-        }
-        return undefined;
-    };
-
-    var jsonReplacer = function (_, value) {
-        /// <summary>JSON replacer function for converting a value to its JSON representation.</summary>
-        /// <param value type="Object">Value to convert.</param>
-        /// <returns type="String">JSON representation of the input value.</returns>
-        /// <remarks>
-        ///   This method is used during JSON serialization and invoked only by the JSON.stringify function.
-        ///   It should never be called directly.
-        /// </remarks>
-
-        if (value && value.__edmType === "Edm.Time") {
-            return formatDuration(value);
-        } else {
-            return value;
-        }
-    };
-
-    var jsonNormalizeData = function (data, baseURI) {
-        /// <summary>
-        /// Normalizes the specified data into an intermediate representation.
-        /// like the latest supported version.
-        /// </summary>
-        /// <param name="data" optional="false">Data to update.</param>
-        /// <param name="baseURI" optional="false">URI to use as the base for normalizing references.</param>
-
-        var isSvcDoc = isComplex(data) && !data.__metadata && isArray(data.EntitySets);
-        return isSvcDoc ? normalizeServiceDocument(data, baseURI) : data;
-    };
-
-    var jsonUpdateDataFromVersion = function (data, dataVersion) {
-        /// <summary>
-        /// Updates the specified data in the specified version to look
-        /// like the latest supported version.
-        /// </summary>
-        /// <param name="data" optional="false">Data to update.</param>
-        /// <param name="dataVersion" optional="true" type="String">Version the data is in (possibly unknown).</param>
-
-        // Strip the trailing comma if there.
-        if (dataVersion && dataVersion.lastIndexOf(";") === dataVersion.length - 1) {
-            dataVersion = dataVersion.substr(0, dataVersion.length - 1);
-        }
-
-        if (!dataVersion || dataVersion === "1.0") {
-            if (isArray(data)) {
-                data = { results: data };
-            }
-        }
-
-        return data;
-    };
-
-    var jsonHandler = handler(jsonParser, jsonSerializer, jsonMediaType, MAX_DATA_SERVICE_VERSION);
-    jsonHandler.recognizeDates = false;
-    jsonHandler.useJsonLight = false;
-    jsonHandler.inferJsonLightFeedAsObject = false;
-
-    odata.jsonHandler = jsonHandler;
-
-
-
-    // DATAJS INTERNAL START
-    odata.jsonParser = jsonParser;
-    odata.jsonSerializer = jsonSerializer;
-    odata.jsonNormalizeData = jsonNormalizeData;
-    odata.jsonUpdateDataFromVersion = jsonUpdateDataFromVersion;
-    odata.normalizeServiceDocument = normalizeServiceDocument;
-    odata.parseJsonDateString = parseJsonDateString;
-    // DATAJS INTERNAL END
-
-    // CONTENT END
-})(this);
-
-
-
-

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/f1cfcbc5/datajs/src/odata-metadata.js
----------------------------------------------------------------------
diff --git a/datajs/src/odata-metadata.js b/datajs/src/odata-metadata.js
deleted file mode 100644
index a7ca00a..0000000
--- a/datajs/src/odata-metadata.js
+++ /dev/null
@@ -1,500 +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-metadata.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-    var odata = window.OData || {};
-
-    // imports 
-
-    var contains = datajs.contains;
-    var normalizeURI = datajs.normalizeURI;
-    var xmlAttributes = datajs.xmlAttributes;
-    var xmlChildElements = datajs.xmlChildElements;
-    var xmlFirstChildElement = datajs.xmlFirstChildElement;
-    var xmlInnerText = datajs.xmlInnerText;
-    var xmlLocalName = datajs.xmlLocalName;
-    var xmlNamespaceURI = datajs.xmlNamespaceURI;
-    var xmlNS = datajs.xmlNS;
-    var xmlnsNS = datajs.xmlnsNS;
-    var xmlParse = datajs.xmlParse;
-
-    var createAttributeExtension = odata.createAttributeExtension;
-    var createElementExtension = odata.createElementExtension;
-    var edmxNs = odata.edmxNs;
-    var edmNs1 = odata.edmNs1;
-    var edmNs1_1 = odata.edmNs1_1;
-    var edmNs1_2 = odata.edmNs1_2;
-    var edmNs2a = odata.edmNs2a;
-    var edmNs2b = odata.edmNs2b;
-    var edmNs3 = odata.edmNs3;
-    var handler = odata.handler;
-    var MAX_DATA_SERVICE_VERSION = odata.MAX_DATA_SERVICE_VERSION;
-    var odataMetaXmlNs = odata.odataMetaXmlNs;
-
-
-    var xmlMediaType = "application/xml";
-
-    // CONTENT START
-
-    var schemaElement = function (attributes, elements, text, ns) {
-        /// <summary>Creates an object that describes an element in an schema.</summary>
-        /// <param name="attributes" type="Array">List containing the names of the attributes allowed for this element.</param>
-        /// <param name="elements" type="Array">List containing the names of the child elements allowed for this element.</param>
-        /// <param name="text" type="Boolean">Flag indicating if the element's text value is of interest or not.</param>
-        /// <param name="ns" type="String">Namespace to which the element belongs to.</param>
-        /// <remarks>
-        ///    If a child element name ends with * then it is understood by the schema that that child element can appear 0 or more times.
-        /// </remarks>
-        /// <returns type="Object">Object with attributes, elements, text, and ns fields.</returns>
-
-        return {
-            attributes: attributes,
-            elements: elements,
-            text: text || false,
-            ns: ns
-        };
-    };
-
-    // It's assumed that all elements may have Documentation children and Annotation elements.
-    // See http://msdn.microsoft.com/en-us/library/bb399292.aspx for a CSDL reference.
-    var schema = {
-        elements: {
-            Annotations: schemaElement(
-            /*attributes*/["Target", "Qualifier"],
-            /*elements*/["TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            Association: schemaElement(
-            /*attributes*/["Name"],
-            /*elements*/["End*", "ReferentialConstraint", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            AssociationSet: schemaElement(
-            /*attributes*/["Name", "Association"],
-            /*elements*/["End*", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            Binary: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Bool: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Collection: schemaElement(
-            /*attributes*/null,
-            /*elements*/["String*", "Int*", "Float*", "Decimal*", "Bool*", "DateTime*", "DateTimeOffset*", "Guid*", "Binary*", "Time*", "Collection*", "Record*"]
-            ),
-            CollectionType: schemaElement(
-            /*attributes*/["ElementType", "Nullable", "DefaultValue", "MaxLength", "FixedLength", "Precision", "Scale", "Unicode", "Collation", "SRID"],
-            /*elements*/["CollectionType", "ReferenceType", "RowType", "TypeRef"]
-            ),
-            ComplexType: schemaElement(
-            /*attributes*/["Name", "BaseType", "Abstract"],
-            /*elements*/["Property*", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            DateTime: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            DateTimeOffset: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Decimal: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            DefiningExpression: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Dependent: schemaElement(
-            /*attributes*/["Role"],
-            /*elements*/["PropertyRef*"]
-            ),
-            Documentation: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            End: schemaElement(
-            /*attributes*/["Type", "Role", "Multiplicity", "EntitySet"],
-            /*elements*/["OnDelete"]
-            ),
-            EntityContainer: schemaElement(
-            /*attributes*/["Name", "Extends"],
-            /*elements*/["EntitySet*", "AssociationSet*", "FunctionImport*", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            EntitySet: schemaElement(
-            /*attributes*/["Name", "EntityType"],
-            /*elements*/["TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            EntityType: schemaElement(
-            /*attributes*/["Name", "BaseType", "Abstract", "OpenType"],
-            /*elements*/["Key", "Property*", "NavigationProperty*", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            EnumType: schemaElement(
-            /*attributes*/["Name", "UnderlyingType", "IsFlags"],
-            /*elements*/["Member*"]
-            ),
-            Float: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Function: schemaElement(
-            /*attributes*/["Name", "ReturnType"],
-            /*elements*/["Parameter*", "DefiningExpression", "ReturnType", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            FunctionImport: schemaElement(
-            /*attributes*/["Name", "ReturnType", "EntitySet", "IsSideEffecting", "IsComposable", "IsBindable", "EntitySetPath"],
-            /*elements*/["Parameter*", "ReturnType", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            Guid: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Int: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Key: schemaElement(
-            /*attributes*/null,
-            /*elements*/["PropertyRef*"]
-            ),
-            LabeledElement: schemaElement(
-            /*attributes*/["Name"],
-            /*elements*/["Path", "String", "Int", "Float", "Decimal", "Bool", "DateTime", "DateTimeOffset", "Guid", "Binary", "Time", "Collection", "Record", "LabeledElement", "Null"]
-            ),
-            Member: schemaElement(
-            /*attributes*/["Name", "Value"]
-            ),
-            NavigationProperty: schemaElement(
-            /*attributes*/["Name", "Relationship", "ToRole", "FromRole", "ContainsTarget"],
-            /*elements*/["TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            Null: schemaElement(
-            /*attributes*/null,
-            /*elements*/null
-            ),
-            OnDelete: schemaElement(
-            /*attributes*/["Action"]
-            ),
-            Path: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Parameter: schemaElement(
-            /*attributes*/["Name", "Type", "Mode", "Nullable", "DefaultValue", "MaxLength", "FixedLength", "Precision", "Scale", "Unicode", "Collation", "ConcurrencyMode", "SRID"],
-            /*elements*/["CollectionType", "ReferenceType", "RowType", "TypeRef", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            Principal: schemaElement(
-            /*attributes*/["Role"],
-            /*elements*/["PropertyRef*"]
-            ),
-            Property: schemaElement(
-            /*attributes*/["Name", "Type", "Nullable", "DefaultValue", "MaxLength", "FixedLength", "Precision", "Scale", "Unicode", "Collation", "ConcurrencyMode", "CollectionKind", "SRID"],
-            /*elements*/["CollectionType", "ReferenceType", "RowType", "TypeAnnotation*", "ValueAnnotation*"]
-            ),
-            PropertyRef: schemaElement(
-            /*attributes*/["Name"]
-            ),
-            PropertyValue: schemaElement(
-            /*attributes*/["Property", "Path", "String", "Int", "Float", "Decimal", "Bool", "DateTime", "DateTimeOffset", "Guid", "Binary", "Time"],
-            /*Elements*/["Path", "String", "Int", "Float", "Decimal", "Bool", "DateTime", "DateTimeOffset", "Guid", "Binary", "Time", "Collection", "Record", "LabeledElement", "Null"]
-            ),
-            ReferenceType: schemaElement(
-            /*attributes*/["Type"]
-            ),
-            ReferentialConstraint: schemaElement(
-            /*attributes*/null,
-            /*elements*/["Principal", "Dependent"]
-            ),
-            ReturnType: schemaElement(
-            /*attributes*/["ReturnType", "Type", "EntitySet"],
-            /*elements*/["CollectionType", "ReferenceType", "RowType"]
-            ),
-            RowType: schemaElement(
-            /*elements*/["Property*"]
-            ),
-            String: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            Schema: schemaElement(
-            /*attributes*/["Namespace", "Alias"],
-            /*elements*/["Using*", "EntityContainer*", "EntityType*", "Association*", "ComplexType*", "Function*", "ValueTerm*", "Annotations*"]
-            ),
-            Time: schemaElement(
-            /*attributes*/null,
-            /*elements*/null,
-            /*text*/true
-            ),
-            TypeAnnotation: schemaElement(
-            /*attributes*/["Term", "Qualifier"],
-            /*elements*/["PropertyValue*"]
-            ),
-            TypeRef: schemaElement(
-            /*attributes*/["Type", "Nullable", "DefaultValue", "MaxLength", "FixedLength", "Precision", "Scale", "Unicode", "Collation", "SRID"]
-            ),
-            Using: schemaElement(
-            /*attributes*/["Namespace", "Alias"]
-            ),
-            ValueAnnotation: schemaElement(
-            /*attributes*/["Term", "Qualifier", "Path", "String", "Int", "Float", "Decimal", "Bool", "DateTime", "DateTimeOffset", "Guid", "Binary", "Time"],
-            /*Elements*/["Path", "String", "Int", "Float", "Decimal", "Bool", "DateTime", "DateTimeOffset", "Guid", "Binary", "Time", "Collection", "Record", "LabeledElement", "Null"]
-            ),
-            ValueTerm: schemaElement(
-            /*attributes*/["Name", "Type"],
-            /*elements*/["TypeAnnotation*", "ValueAnnotation*"]
-            ),
-
-            // See http://msdn.microsoft.com/en-us/library/dd541238(v=prot.10) for an EDMX reference.
-            Edmx: schemaElement(
-            /*attributes*/["Version"],
-            /*elements*/["DataServices", "Reference*", "AnnotationsReference*"],
-            /*text*/false,
-            /*ns*/edmxNs
-            ),
-            DataServices: schemaElement(
-            /*attributes*/null,
-            /*elements*/["Schema*"],
-            /*text*/false,
-            /*ns*/edmxNs
-            )
-        }
-    };
-
-    // See http://msdn.microsoft.com/en-us/library/ee373839.aspx for a feed customization reference.
-    var customizationAttributes = ["m:FC_ContentKind", "m:FC_KeepInContent", "m:FC_NsPrefix", "m:FC_NsUri", "m:FC_SourcePath", "m:FC_TargetPath"];
-    schema.elements.Property.attributes = schema.elements.Property.attributes.concat(customizationAttributes);
-    schema.elements.EntityType.attributes = schema.elements.EntityType.attributes.concat(customizationAttributes);
-
-    // See http://msdn.microsoft.com/en-us/library/dd541284(PROT.10).aspx for an EDMX reference.
-    schema.elements.Edmx = { attributes: ["Version"], elements: ["DataServices"], ns: edmxNs };
-    schema.elements.DataServices = { elements: ["Schema*"], ns: edmxNs };
-
-    // See http://msdn.microsoft.com/en-us/library/dd541233(v=PROT.10) for Conceptual Schema Definition Language Document for Data Services.
-    schema.elements.EntityContainer.attributes.push("m:IsDefaultEntityContainer");
-    schema.elements.Property.attributes.push("m:MimeType");
-    schema.elements.FunctionImport.attributes.push("m:HttpMethod");
-    schema.elements.FunctionImport.attributes.push("m:IsAlwaysBindable");
-    schema.elements.EntityType.attributes.push("m:HasStream");
-    schema.elements.DataServices.attributes = ["m:DataServiceVersion", "m:MaxDataServiceVersion"];
-
-    var scriptCase = function (text) {
-        /// <summary>Converts a Pascal-case identifier into a camel-case identifier.</summary>
-        /// <param name="text" type="String">Text to convert.</param>
-        /// <returns type="String">Converted text.</returns>
-        /// <remarks>If the text starts with multiple uppercase characters, it is left as-is.</remarks>
-
-        if (!text) {
-            return text;
-        }
-
-        if (text.length > 1) {
-            var firstTwo = text.substr(0, 2);
-            if (firstTwo === firstTwo.toUpperCase()) {
-                return text;
-            }
-
-            return text.charAt(0).toLowerCase() + text.substr(1);
-        }
-
-        return text.charAt(0).toLowerCase();
-    };
-
-    var getChildSchema = function (parentSchema, candidateName) {
-        /// <summary>Gets the schema node for the specified element.</summary>
-        /// <param name="parentSchema" type="Object">Schema of the parent XML node of 'element'.</param>
-        /// <param name="candidateName">XML element name to consider.</param>
-        /// <returns type="Object">The schema that describes the specified element; null if not found.</returns>
-
-        if (candidateName === "Documentation") {
-            return { isArray: true, propertyName: "documentation" };
-        }
-
-        var elements = parentSchema.elements;
-        if (!elements) {
-            return null;
-        }
-
-        var i, len;
-        for (i = 0, len = elements.length; i < len; i++) {
-            var elementName = elements[i];
-            var multipleElements = false;
-            if (elementName.charAt(elementName.length - 1) === "*") {
-                multipleElements = true;
-                elementName = elementName.substr(0, elementName.length - 1);
-            }
-
-            if (candidateName === elementName) {
-                var propertyName = scriptCase(elementName);
-                return { isArray: multipleElements, propertyName: propertyName };
-            }
-        }
-
-        return null;
-    };
-
-    // This regular expression is used to detect a feed customization element
-    // after we've normalized it into the 'm' prefix. It starts with m:FC_,
-    // followed by other characters, and ends with _ and a number.
-    // The captures are 0 - whole string, 1 - name as it appears in internal table.
-    var isFeedCustomizationNameRE = /^(m:FC_.*)_[0-9]+$/;
-
-    var isEdmNamespace = function (nsURI) {
-        /// <summary>Checks whether the specifies namespace URI is one of the known CSDL namespace URIs.</summary>
-        /// <param name="nsURI" type="String">Namespace URI to check.</param>
-        /// <returns type="Boolean">true if nsURI is a known CSDL namespace; false otherwise.</returns>
-
-        return nsURI === edmNs1 ||
-               nsURI === edmNs1_1 ||
-               nsURI === edmNs1_2 ||
-               nsURI === edmNs2a ||
-               nsURI === edmNs2b ||
-               nsURI === edmNs3;
-    };
-
-    var parseConceptualModelElement = function (element) {
-        /// <summary>Parses a CSDL document.</summary>
-        /// <param name="element">DOM element to parse.</param>
-        /// <returns type="Object">An object describing the parsed element.</returns>
-
-        var localName = xmlLocalName(element);
-        var nsURI = xmlNamespaceURI(element);
-        var elementSchema = schema.elements[localName];
-        if (!elementSchema) {
-            return null;
-        }
-
-        if (elementSchema.ns) {
-            if (nsURI !== elementSchema.ns) {
-                return null;
-            }
-        } else if (!isEdmNamespace(nsURI)) {
-            return null;
-        }
-
-        var item = {};
-        var extensions = [];
-        var attributes = elementSchema.attributes || [];
-        xmlAttributes(element, function (attribute) {
-
-            var localName = xmlLocalName(attribute);
-            var nsURI = xmlNamespaceURI(attribute);
-            var value = attribute.value;
-
-            // Don't do anything with xmlns attributes.
-            if (nsURI === xmlnsNS) {
-                return;
-            }
-
-            // Currently, only m: for metadata is supported as a prefix in the internal schema table,
-            // un-prefixed element names imply one a CSDL element.
-            var schemaName = null;
-            var handled = false;
-            if (isEdmNamespace(nsURI) || nsURI === null) {
-                schemaName = "";
-            } else if (nsURI === odataMetaXmlNs) {
-                schemaName = "m:";
-            }
-
-            if (schemaName !== null) {
-                schemaName += localName;
-
-                // Feed customizations for complex types have additional
-                // attributes with a suffixed counter starting at '1', so
-                // take that into account when doing the lookup.
-                var match = isFeedCustomizationNameRE.exec(schemaName);
-                if (match) {
-                    schemaName = match[1];
-                }
-
-                if (contains(attributes, schemaName)) {
-                    handled = true;
-                    item[scriptCase(localName)] = value;
-                }
-            }
-
-            if (!handled) {
-                extensions.push(createAttributeExtension(attribute));
-            }
-        });
-
-        xmlChildElements(element, function (child) {
-            var localName = xmlLocalName(child);
-            var childSchema = getChildSchema(elementSchema, localName);
-            if (childSchema) {
-                if (childSchema.isArray) {
-                    var arr = item[childSchema.propertyName];
-                    if (!arr) {
-                        arr = [];
-                        item[childSchema.propertyName] = arr;
-                    }
-                    arr.push(parseConceptualModelElement(child));
-                } else {
-                    item[childSchema.propertyName] = parseConceptualModelElement(child);
-                }
-            } else {
-                extensions.push(createElementExtension(child));
-            }
-        });
-
-        if (elementSchema.text) {
-            item.text = xmlInnerText(element);
-        }
-
-        if (extensions.length) {
-            item.extensions = extensions;
-        }
-
-        return item;
-    };
-
-    var metadataParser = function (handler, text) {
-        /// <summary>Parses a metadata document.</summary>
-        /// <param name="handler">This handler.</param>
-        /// <param name="text" type="String">Metadata text.</param>
-        /// <returns>An object representation of the conceptual model.</returns>
-
-        var doc = xmlParse(text);
-        var root = xmlFirstChildElement(doc);
-        return parseConceptualModelElement(root) || undefined;
-    };
-
-    odata.metadataHandler = handler(metadataParser, null, xmlMediaType, MAX_DATA_SERVICE_VERSION);
-
-    // DATAJS INTERNAL START
-    odata.schema = schema;
-    odata.scriptCase = scriptCase;
-    odata.getChildSchema = getChildSchema;
-    odata.parseConceptualModelElement = parseConceptualModelElement;
-    odata.metadataParser = metadataParser;
-    // 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-net.js
----------------------------------------------------------------------
diff --git a/datajs/src/odata-net.js b/datajs/src/odata-net.js
deleted file mode 100644
index ad9b8dd..0000000
--- a/datajs/src/odata-net.js
+++ /dev/null
@@ -1,330 +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-net.js
-
-(function (window, undefined) {
-
-    var datajs = window.datajs || {};
-    var odata = window.OData || {};
-
-    // Imports.
-
-    var defined = datajs.defined;
-    var delay = datajs.delay;
-
-    // CONTENT START
-    var ticks = 0;
-
-    var canUseJSONP = function (request) {
-        /// <summary>
-        /// Checks whether the specified request can be satisfied with a JSONP request.
-        /// </summary>
-        /// <param name="request">Request object to check.</param>
-        /// <returns type="Boolean">true if the request can be satisfied; false otherwise.</returns>
-
-        // Requests that 'degrade' without changing their meaning by going through JSONP
-        // are considered usable.
-        //
-        // We allow data to come in a different format, as the servers SHOULD honor the Accept
-        // request but may in practice return content with a different MIME type.
-        if (request.method && request.method !== "GET") {
-            return false;
-        }
-
-        return true;
-    };
-
-    var createIFrame = function (url) {
-        /// <summary>Creates an IFRAME tag for loading the JSONP script</summary>
-        /// <param name="url" type="String">The source URL of the script</param>
-        /// <returns type="HTMLElement">The IFRAME tag</returns>
-        var iframe = window.document.createElement("IFRAME");
-        iframe.style.display = "none";
-
-        var attributeEncodedUrl = url.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/\</g, "&lt;");
-        var html = "<html><head><script type=\"text/javascript\" src=\"" + attributeEncodedUrl + "\"><\/script><\/head><body><\/body><\/html>";
-
-        var body = window.document.getElementsByTagName("BODY")[0];
-        body.appendChild(iframe);
-
-        writeHtmlToIFrame(iframe, html);
-        return iframe;
-    };
-
-    var createXmlHttpRequest = function () {
-        /// <summary>Creates a XmlHttpRequest object.</summary>
-        /// <returns type="XmlHttpRequest">XmlHttpRequest object.</returns>
-        if (window.XMLHttpRequest) {
-            return new window.XMLHttpRequest();
-        }
-        var exception;
-        if (window.ActiveXObject) {
-            try {
-                return new window.ActiveXObject("Msxml2.XMLHTTP.6.0");
-            } catch (_) {
-                try {
-                    return new window.ActiveXObject("Msxml2.XMLHTTP.3.0");
-                } catch (e) {
-                    exception = e;
-                }
-            }
-        } else {
-            exception = { message: "XMLHttpRequest not supported" };
-        }
-        throw exception;
-    };
-
-    var isAbsoluteUrl = function (url) {
-        /// <summary>Checks whether the specified URL is an absolute URL.</summary>
-        /// <param name="url" type="String">URL to check.</param>
-        /// <returns type="Boolean">true if the url is an absolute URL; false otherwise.</returns>
-
-        return url.indexOf("http://") === 0 ||
-            url.indexOf("https://") === 0 ||
-            url.indexOf("file://") === 0;
-    };
-
-    var isLocalUrl = function (url) {
-        /// <summary>Checks whether the specified URL is local to the current context.</summary>
-        /// <param name="url" type="String">URL to check.</param>
-        /// <returns type="Boolean">true if the url is a local URL; false otherwise.</returns>
-
-        if (!isAbsoluteUrl(url)) {
-            return true;
-        }
-
-        // URL-embedded username and password will not be recognized as same-origin URLs.
-        var location = window.location;
-        var locationDomain = location.protocol + "//" + location.host + "/";
-        return (url.indexOf(locationDomain) === 0);
-    };
-
-    var removeCallback = function (name, tick) {
-        /// <summary>Removes a callback used for a JSONP request.</summary>
-        /// <param name="name" type="String">Function name to remove.</param>
-        /// <param name="tick" type="Number">Tick count used on the callback.</param>
-        try {
-            delete window[name];
-        } catch (err) {
-            window[name] = undefined;
-            if (tick === ticks - 1) {
-                ticks -= 1;
-            }
-        }
-    };
-
-    var removeIFrame = function (iframe) {
-        /// <summary>Removes an iframe.</summary>
-        /// <param name="iframe" type="Object">The iframe to remove.</param>
-        /// <returns type="Object">Null value to be assigned to iframe reference.</returns>
-        if (iframe) {
-            writeHtmlToIFrame(iframe, "");
-            iframe.parentNode.removeChild(iframe);
-        }
-
-        return null;
-    };
-
-    var readResponseHeaders = function (xhr, headers) {
-        /// <summary>Reads response headers into array.</summary>
-        /// <param name="xhr" type="XMLHttpRequest">HTTP request with response available.</param>
-        /// <param name="headers" type="Array">Target array to fill with name/value pairs.</param>
-
-        var responseHeaders = xhr.getAllResponseHeaders().split(/\r?\n/);
-        var i, len;
-        for (i = 0, len = responseHeaders.length; i < len; i++) {
-            if (responseHeaders[i]) {
-                var header = responseHeaders[i].split(": ");
-                headers[header[0]] = header[1];
-            }
-        }
-    };
-
-    var writeHtmlToIFrame = function (iframe, html) {
-        /// <summary>Writes HTML to an IFRAME document.</summary>
-        /// <param name="iframe" type="HTMLElement">The IFRAME element to write to.</param>
-        /// <param name="html" type="String">The HTML to write.</param>
-        var frameDocument = (iframe.contentWindow) ? iframe.contentWindow.document : iframe.contentDocument.document;
-        frameDocument.open();
-        frameDocument.write(html);
-        frameDocument.close();
-    };
-
-    odata.defaultHttpClient = {
-        callbackParameterName: "$callback",
-
-        formatQueryString: "$format=json",
-
-        enableJsonpCallback: false,
-
-        request: function (request, success, error) {
-            /// <summary>Performs a network request.</summary>
-            /// <param name="request" type="Object">Request description.</request>
-            /// <param name="success" type="Function">Success callback with the response object.</param>
-            /// <param name="error" type="Function">Error callback with an error object.</param>
-            /// <returns type="Object">Object with an 'abort' method for the operation.</returns>
-
-            var result = {};
-            var xhr = null;
-            var done = false;
-            var iframe;
-
-            result.abort = function () {
-                iframe = removeIFrame(iframe);
-                if (done) {
-                    return;
-                }
-
-                done = true;
-                if (xhr) {
-                    xhr.abort();
-                    xhr = null;
-                }
-
-                error({ message: "Request aborted" });
-            };
-
-            var handleTimeout = function () {
-                iframe = removeIFrame(iframe);
-                if (!done) {
-                    done = true;
-                    xhr = null;
-                    error({ message: "Request timed out" });
-                }
-            };
-
-            var name;
-            var url = request.requestUri;
-            var enableJsonpCallback = defined(request.enableJsonpCallback, this.enableJsonpCallback);
-            var callbackParameterName = defined(request.callbackParameterName, this.callbackParameterName);
-            var formatQueryString = defined(request.formatQueryString, this.formatQueryString);
-            if (!enableJsonpCallback || isLocalUrl(url)) {
-
-                xhr = createXmlHttpRequest();
-                xhr.onreadystatechange = function () {
-                    if (done || xhr === null || xhr.readyState !== 4) {
-                        return;
-                    }
-
-                    // Workaround for XHR behavior on IE.
-                    var statusText = xhr.statusText;
-                    var statusCode = xhr.status;
-                    if (statusCode === 1223) {
-                        statusCode = 204;
-                        statusText = "No Content";
-                    }
-
-                    var headers = [];
-                    readResponseHeaders(xhr, headers);
-
-                    var response = { requestUri: url, statusCode: statusCode, statusText: statusText, headers: headers, body: xhr.responseText };
-
-                    done = true;
-                    xhr = null;
-                    if (statusCode >= 200 && statusCode <= 299) {
-                        success(response);
-                    } else {
-                        error({ message: "HTTP request failed", request: request, response: response });
-                    }
-                };
-
-                xhr.open(request.method || "GET", url, true, request.user, request.password);
-
-                // Set the name/value pairs.
-                if (request.headers) {
-                    for (name in request.headers) {
-                        xhr.setRequestHeader(name, request.headers[name]);
-                    }
-                }
-
-                // Set the timeout if available.
-                if (request.timeoutMS) {
-                    xhr.timeout = request.timeoutMS;
-                    xhr.ontimeout = handleTimeout;
-                }
-
-                xhr.send(request.body);
-            } else {
-                if (!canUseJSONP(request)) {
-                    throw { message: "Request is not local and cannot be done through JSONP." };
-                }
-
-                var tick = ticks;
-                ticks += 1;
-                var tickText = tick.toString();
-                var succeeded = false;
-                var timeoutId;
-                name = "handleJSONP_" + tickText;
-                window[name] = function (data) {
-                    iframe = removeIFrame(iframe);
-                    if (!done) {
-                        succeeded = true;
-                        window.clearTimeout(timeoutId);
-                        removeCallback(name, tick);
-
-                        // Workaround for IE8 and IE10 below where trying to access data.constructor after the IFRAME has been removed
-                        // throws an "unknown exception"
-                        if (window.ActiveXObject) {
-                            data = window.JSON.parse(window.JSON.stringify(data));
-                        }
-
-
-                        var headers;
-                        // Adding dataServiceVersion in case of json light ( data.d doesn't exist )
-                        if (data.d === undefined) {
-                            headers = { "Content-Type": "application/json;odata=minimalmetadata", dataServiceVersion: "3.0" };
-                        } else {
-                            headers = { "Content-Type": "application/json" };
-                        }
-                        // Call the success callback in the context of the parent window, instead of the IFRAME
-                        delay(function () {
-                            removeIFrame(iframe);
-                            success({ body: data, statusCode: 200, headers: headers });
-                        });
-                    }
-                };
-
-                // Default to two minutes before timing out, 1000 ms * 60 * 2 = 120000.
-                var timeoutMS = (request.timeoutMS) ? request.timeoutMS : 120000;
-                timeoutId = window.setTimeout(handleTimeout, timeoutMS);
-
-                var queryStringParams = callbackParameterName + "=parent." + name;
-                if (this.formatQueryString) {
-                    queryStringParams += "&" + formatQueryString;
-                }
-
-                var qIndex = url.indexOf("?");
-                if (qIndex === -1) {
-                    url = url + "?" + queryStringParams;
-                } else if (qIndex === url.length - 1) {
-                    url = url + queryStringParams;
-                } else {
-                    url = url + "&" + queryStringParams;
-                }
-
-                iframe = createIFrame(url);
-            }
-
-            return result;
-        }
-    };
-
-    // DATAJS INTERNAL START
-    odata.canUseJSONP = canUseJSONP;
-    odata.isAbsoluteUrl = isAbsoluteUrl;
-    odata.isLocalUrl = isLocalUrl;
-    // DATAJS INTERNAL END
-
-    // CONTENT END
-})(this);
\ No newline at end of file