http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/80db48ba/JSLib/tests/endpoints/FoodStoreDataServiceV3.svc
----------------------------------------------------------------------
diff --git a/JSLib/tests/endpoints/FoodStoreDataServiceV3.svc 
b/JSLib/tests/endpoints/FoodStoreDataServiceV3.svc
deleted file mode 100644
index 6ad9671..0000000
--- a/JSLib/tests/endpoints/FoodStoreDataServiceV3.svc
+++ /dev/null
@@ -1,583 +0,0 @@
-<%@ ServiceHost Language="C#" 
Factory="System.Data.Services.DataServiceHostFactory, Microsoft.Data.Services, 
Version=5.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-    Service="DataJS.Tests.V3.FoodStoreDataService" %>
-
-// 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.
-
-namespace DataJS.Tests.V3
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Data.Services;
-    using System.Data.Services.Common;
-    using System.Data.Services.Providers;
-    using System.Linq;
-    using System.ServiceModel.Web;
-    using System.Web;
-    using System.IO;
-    using System.Spatial;
-    
-    /// <summary>
-    /// Provides a service similar to FoodStoreDataService, but uses V3 and 
WCF Data Services 5.x
-    /// features.
-    /// </summary>
-    [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = 
true)]
-    public class FoodStoreDataService : DataService<FoodContainer>
-    {
-        // This method is called only once to initialize service-wide policies.
-        public static void InitializeService(DataServiceConfiguration config)
-        {
-            config.SetEntitySetAccessRule("*", EntitySetRights.All);
-            config.SetServiceOperationAccessRule("*", 
ServiceOperationRights.All);
-            config.UseVerboseErrors = true;
-            config.DataServiceBehavior.MaxProtocolVersion = 
DataServiceProtocolVersion.V3;
-            // Set Foods page size to 5 for cache testing
-            config.SetEntitySetPageSize("Foods", 5);
-            // Make the Categories set paged to have a paged feed
-            config.SetEntitySetPageSize("Categories", 1);
-        }
-        
-        [WebInvoke]
-        public string ResetData()
-        {
-            this.CurrentDataSource.ResetData();
-            return "Data Reset";
-        }
-
-        [WebGet]
-        public IQueryable<string> FoodsAvailable()
-        {
-            return this.CurrentDataSource.Foods.Select(food => food.Name);
-        }
-
-        [WebGet]
-        public IQueryable<Package> PackagingTypes()
-        {
-            return this.CurrentDataSource.Foods.Select(food => food.Packaging);
-        }
-    }
-
-    public class FoodContainer : ReflectionDataContext, IUpdatable, 
IDataServiceStreamProvider2
-    {
-        private static bool dataInitialized;
-
-        public IQueryable<Category> Categories
-        {
-            get { return 
this.GetResourceSetEntities<Category>("Categories").AsQueryable(); }
-        }
-        
-        public IQueryable<Food> Foods
-        {
-            get { return 
this.GetResourceSetEntities<Food>("Foods").AsQueryable(); }
-        }
-
-        public void ResetData()
-        {
-            this.ClearData();
-
-            var builder = 
SpatialImplementation.CurrentImplementation.CreateBuilder();
-            
builder.GeometryPipeline.SetCoordinateSystem(CoordinateSystem.DefaultGeography);
-            builder.GeometryPipeline.BeginGeometry(SpatialType.Collection);
-            builder.GeometryPipeline.BeginFigure(new GeometryPosition(5.0, 
5.0));
-            builder.GeometryPipeline.EndFigure();
-            builder.GeometryPipeline.EndGeometry();
-            
-            int i = 0;
-            Category[] categories = new Category[]
-            {
-                new Category { CategoryID = i++, Name = "Baking Supplies" },
-                new Category { CategoryID = i++, Name = "Condiments" },
-                new Category { CategoryID = i++, Name = "Empty Category" }
-            };
-            Array.ForEach(categories, (category) => 
this.GetResourceSetEntities<Category>("Categories").Add(category));
-            
-            i = 0;
-            Food[] foods = new Food[]
-            {            
-                new Food()
-                {
-                    FoodID = i++,
-                    Name = "flour",
-                    UnitPrice = .19999,
-                    ServingSize = 1,
-                    MeasurementUnit = "Cup",
-                    ProteinGrams = 3,
-                    FatGrams = 1,
-                    CarbohydrateGrams = 20,
-                    CaloriesPerServing = 140,
-                    IsAvailable = true,
-                    ExpirationDate = new DateTime(2010, 12, 25, 12, 0, 0),
-                    ItemGUID = new Guid("27272727272727272727272727272727"),
-                    Weight = 10f,
-                    AvailableUnits = 1,
-                    
-                    Packaging = new Package(){
-                        Type = null, 
-                        Color = String.Empty, 
-                        NumberPerPackage = int.MaxValue, 
-                        RequiresRefridgeration = false, 
-                        PackageDimensions = new Dimensions()
-                        {
-                            Length = Decimal.MaxValue, 
-                            Height = Int16.MaxValue, 
-                            Width = Int64.MaxValue, 
-                            Volume = double.MaxValue,   
-                        },
-                        ShipDate = new DateTime(2000, 12, 29)
-                    },
-                    
-                    CookedSize = new CookedDimensions()
-                    {
-                        Height = 1,
-                        Length = 2,
-                        Width = 3,
-                        Volume = 1 * 2 * 3
-                    },
-                    
-                    Category = categories[0],
-                    
-                    AlternativeNames = new List<string>() {"ground cereal", 
"ground grain"},
-                    
-                    Providers = new List<Provider> {
-                        new Provider() { 
-                             Name= "Flour Provider", 
-                             Aliases = new List<string>() {"fp1", "flour 
provider1"},
-                             Details = new ProviderDetails() {
-                                 Telephone= "555-555-555",
-                                 PreferredCode = 1001
-                             }
-                        },
-                        new Provider() { 
-                             Name= "Ground Grains", 
-                             Aliases = new List<string>()
-                        }
-                    },
-                    
-                    SpatialData = 
(GeometryCollection)builder.ConstructedGeometry 
-                },
-                
-                new Food()
-                {
-                    FoodID = i++,
-                    Name = "sugar",
-                    UnitPrice = .2,
-                    ServingSize = 1,
-                    MeasurementUnit = "tsp",
-                    ProteinGrams = 0,
-                    FatGrams = 0,
-                    CarbohydrateGrams = 4,
-                    CaloriesPerServing = 16,
-                    IsAvailable = false,
-                    ExpirationDate = new DateTime(2011, 12, 28),
-                    ItemGUID = new Guid("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"),
-                    Weight = 0.1f,
-                    AvailableUnits = 0,
-
-                    Packaging = new Package(){
-                        Type = " ",
-                        Color = "BLUE",
-                        NumberPerPackage = int.MinValue,
-                        RequiresRefridgeration = true,
-                        PackageDimensions = new Dimensions(){
-                            Length = Decimal.MinValue,
-                            Height = Int16.MinValue,
-                            Width = Int64.MinValue,
-                            Volume = double.MinValue,
-                        },
-                        ShipDate = new DateTime(2000, 12, 29),
-                    },
-                    
-                    Category = categories[1],
-                },
-
-                new Food()
-                {
-                    FoodID = i++,
-                    Name = "1 Chicken Egg",
-                    UnitPrice = 0.55,
-                    MeasurementUnit = null,
-                    ServingSize = 1,
-                    ProteinGrams = 6,
-                    FatGrams = 1,
-                    CarbohydrateGrams = 1,
-                    CaloriesPerServing = 70,
-                    IsAvailable = true,
-                    ExpirationDate = new DateTime(2000, 12, 29),
-                    ItemGUID = new Guid("00000000000000000000000000000000"),
-                    Weight = 0,
-                    AvailableUnits = -128,
-                    
-                    Packaging = new Package(){
-                        Type = "18     - Carton",
-                        Color = " brown ",
-                        NumberPerPackage = 0,
-                        RequiresRefridgeration = true,
-                        PackageDimensions = null,
-                        ShipDate = new DateTime(2000, 12, 29),
-                    },
-                    
-                    Category = null,
-                },
-
-                new Food()
-                {
-                    FoodID = i++,
-                    Name = "Brown Sugar",
-                    UnitPrice = 1.6,
-                    ServingSize = 1,
-                    MeasurementUnit = "TSP.",
-                    ProteinGrams = 0,
-                    FatGrams = 0,
-                    CarbohydrateGrams = 5, 
-                    CaloriesPerServing = 16,
-                    IsAvailable = true,
-                    ExpirationDate = new DateTime(2011, 12, 28),
-                    ItemGUID = new Guid("0123456789abcdef0123456789abcdef"),
-                    Weight = 4.5f,
-                    AvailableUnits = 127,
-                    Packaging = null,
-                    Category = categories[1],
-                },
-                
-                new PreparedFood()
-                {
-                    FoodID = i++,
-                    Name = "Cobb Salad",
-                    UnitPrice = 1.99,
-                    ServingSize = -1,
-                    MeasurementUnit = "cups",
-                    ProteinGrams = 6,
-                    FatGrams = 1,
-                    CarbohydrateGrams = 3, 
-                    CaloriesPerServing = 5,
-                    IsAvailable = true,
-                    ExpirationDate = new DateTime(2000, 12, 29),
-                    ItemGUID = new Guid("0123456789abcdef0123456789abcdef"),
-                    Weight = 5.674f,
-                    AvailableUnits = 127,
-                    Packaging = null,
-                    Category = categories[1],
-                    Instructions = "1.) Open 2.) Eat",
-                    NumberOfIngredients = 4,
-                },
-                
-                new PreparedFood()
-                {
-                    FoodID = i++,
-                    Name = "Lasagna",
-                    UnitPrice = 0,
-                    ServingSize = 8,
-                    MeasurementUnit = " servings",
-                    ProteinGrams = 100,
-                    FatGrams = 4,
-                    CarbohydrateGrams = 27, 
-                    CaloriesPerServing = 389,
-                    IsAvailable = true,
-                    ExpirationDate = new DateTime(1904, 2, 29),
-                    ItemGUID = new Guid("0123456789abcdef0123456789abcdef"),
-                    Weight = 0,
-                    AvailableUnits = 4,
-                    Packaging = new Package(){
-                        Type = "box",
-                        Color = " 1 ",
-                        NumberPerPackage = 1,
-                        RequiresRefridgeration = true,
-                        PackageDimensions = new Dimensions(){
-                            Length = 3,
-                            Height = 1,
-                            Width = 5,
-                            Volume = 1.5,
-                        },
-                        ShipDate = new DateTime(2000, 12, 29),
-                    },
-                    Category = categories[0],
-                    Instructions = "Bake in oven",
-                    NumberOfIngredients = 15,
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Chocolate"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Pizza"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Avocados"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Quinoa"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Oatmeal"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Peanut Butter"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Banana"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Yam"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Clam"
-                },
-                
-                new Food()
-                {                    
-                    FoodID = i++,
-                    Name = "Spam"
-                }
-            };
-            Array.ForEach(foods, (food) => 
this.GetResourceSetEntities<Food>("Foods").Add(food));
-
-            categories[0].Foods.Add(foods[0]);
-            categories[1].Foods.Add(foods[2]);
-            categories[1].Foods.Add(foods[3]);
-        }
-
-        protected override void EnsureDataIsInitialized()
-        {
-            if (!dataInitialized)
-            {
-                this.ResetData();
-                dataInitialized = true;
-            }
-        }
-
-        public Stream GetReadStream(object entity, ResourceProperty 
streamProperty, string etag, bool? checkETagForEquality, 
DataServiceOperationContext operationContext)
-        {
-            return new MemoryStream();
-        }
-
-        public Uri GetReadStreamUri(object entity, ResourceProperty 
streamProperty, DataServiceOperationContext operationContext)
-        {
-            if (streamProperty.Name == "Icon")
-            {
-                return null;
-            }
-            return new Uri(operationContext.AbsoluteServiceUri, 
streamProperty.Name);
-        }
-
-        public string GetStreamContentType(object entity, ResourceProperty 
streamProperty, DataServiceOperationContext operationContext)
-        {
-            if (streamProperty.Name == "Icon")
-            {
-                return "image/gif";
-            }
-            return "image/png";
-        }
-
-        public string GetStreamETag(object entity, ResourceProperty 
streamProperty, DataServiceOperationContext operationContext)
-        {
-            return "W/\"123456789\"";
-        }
-
-        public Stream GetWriteStream(object entity, ResourceProperty 
streamProperty, string etag, bool? checkETagForEquality, 
DataServiceOperationContext operationContext)
-        {
-            return new MemoryStream();
-        }
-
-        public void DeleteStream(object entity, DataServiceOperationContext 
operationContext)
-        {
-            // do nothing.
-        }
-
-        public Stream GetReadStream(object entity, string etag, bool? 
checkETagForEquality, DataServiceOperationContext operationContext)
-        {
-            throw new NotImplementedException();
-        }
-
-        public Uri GetReadStreamUri(object entity, DataServiceOperationContext 
operationContext)
-        {
-            throw new NotImplementedException();
-        }
-
-        public string GetStreamContentType(object entity, 
DataServiceOperationContext operationContext)
-        {
-            throw new NotImplementedException();
-        }
-
-        public string GetStreamETag(object entity, DataServiceOperationContext 
operationContext)
-        {
-            throw new NotImplementedException();
-        }
-
-        public Stream GetWriteStream(object entity, string etag, bool? 
checkETagForEquality, DataServiceOperationContext operationContext)
-        {
-            throw new NotImplementedException();
-        }
-
-        public string ResolveType(string entitySetName, 
DataServiceOperationContext operationContext)
-        {
-            throw new NotImplementedException();
-        }
-
-        public int StreamBufferSize
-        {
-            get { return 1024; }
-        }
-    }
-
-    /// <summary>
-    /// The Category class is a simple class with V1-compatible feed 
customizations.
-    /// </summary>
-    [EntityPropertyMapping("Name", SyndicationItemProperty.Title, 
SyndicationTextContentKind.Plaintext, true)]
-    [DataServiceKey("CategoryID")]
-    [EntitySet("Categories")]
-    [NamedStream("Icon")]
-    public class Category
-    {
-        public Category()
-        {
-            this.Foods = new List<Food>();
-        }
-        
-        public int CategoryID { get; set; }
-        public string Name { get; set; }
-        public List<Food> Foods { get; set; }
-    }
-    
-    /// <summary>
-    /// The Food class has a mixture of V1-compatible and incompatible feed
-    /// customizations (thus it's V2), and custom mappings.
-    /// </summary>
-    [EntityPropertyMapping("Name", SyndicationItemProperty.Title, 
SyndicationTextContentKind.Plaintext, true)]
-    [EntityPropertyMapping("UnitPrice", "price/@value", "pr", 
"http://www.example.org/price/";, false)]
-    [EntityPropertyMapping("CookedSize/Length", "cooked/@length", "cooked", 
"http://www.example.org/cooked/";, false)]
-    [EntityPropertyMapping("CookedSize/Height", "cooked/@height", "cooked", 
"http://www.example.org/cooked/";, false)]
-    [EntityPropertyMapping("CookedSize/Width", "cooked/@width", "cooked", 
"http://www.example.org/cooked/";, false)]
-    [EntityPropertyMapping("CookedSize/Volume", "cooked/volume", "cooked", 
"http://www.example.org/cooked/";, false)]
-    [DataServiceKey("FoodID")]
-    [EntitySet("Foods")]
-    [NamedStream("Picture")]
-    public class Food
-    {
-        private List<string> alternativeNames = new List<string>();
-        private List<Provider> providers = new List<Provider>();
-        
-        // Primitive types
-        public int FoodID { get; set; }
-        public string Name { get; set; }
-        public double UnitPrice { get; set; }
-        public Decimal ServingSize { get; set; }
-        public string MeasurementUnit { get; set; }
-        public Byte ProteinGrams { get; set; }
-        public Int16 FatGrams { get; set; }
-        public Int32 CarbohydrateGrams { get; set; }
-        public Int64 CaloriesPerServing { get; set; }
-        public Boolean IsAvailable { get; set; }
-        public DateTime ExpirationDate { get; set; }
-        public Guid ItemGUID { get; set; }
-        public Single Weight { get; set; }
-        public sbyte AvailableUnits { get; set; }
-
-        // Complex types
-        public Package Packaging { get; set; }
-        public CookedDimensions CookedSize { get; set; }
-
-        // Navigation properties
-        public Category Category { get; set; }
-
-        // Collection properties
-        public List<string> AlternativeNames
-        {
-            get { return alternativeNames; }
-            set { alternativeNames = value; }
-        }
-
-        public List<Provider> Providers
-        {
-            get { return providers; }
-            set { providers = value; }
-        }
-
-        public GeometryCollection SpatialData
-        {
-            get;
-            set;
-        }
-        
-    }
-
-    public class Provider
-    {
-        public string Name { get; set; }
-        public List<string> Aliases { get; set; }
-        public ProviderDetails Details { get; set; }
-    }
-
-    public class ProviderDetails
-    {
-        public string Telephone { get; set; }
-        public int PreferredCode { get; set; }
-    }
-    
-    public class Package
-    {
-        public string Type { get; set; }
-        public string Color { get; set; }
-        public int NumberPerPackage { get; set; }
-        public Boolean RequiresRefridgeration { get; set; }
-        public DateTime ShipDate { get; set; }
-        public Dimensions PackageDimensions { get; set; }
-    }
-
-    public class Dimensions
-    {
-        public Decimal Length { get; set; }
-        public Int16 Height { get; set; }
-        public Int64 Width { get; set; }
-        public double Volume { get; set; }
-    }
-
-    public class CookedDimensions
-    {
-        public Decimal Length { get; set; }
-        public Int16 Height { get; set; }
-        public Int64 Width { get; set; }
-        public double Volume { get; set; }
-    }
-
-    public class PreparedFood : Food
-    {
-        public string Instructions { get; set; }
-        public float NumberOfIngredients { get; set; }
-    }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/80db48ba/JSLib/tests/endpoints/FoodStoreDataServiceV4.svc
----------------------------------------------------------------------
diff --git a/JSLib/tests/endpoints/FoodStoreDataServiceV4.svc 
b/JSLib/tests/endpoints/FoodStoreDataServiceV4.svc
new file mode 100644
index 0000000..21f09cf
--- /dev/null
+++ b/JSLib/tests/endpoints/FoodStoreDataServiceV4.svc
@@ -0,0 +1,589 @@
+<%@ ServiceHost Language="C#" 
Factory="Microsoft.OData.Service.DataServiceHostFactory, 
Microsoft.OData.Service, Version=6.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35"
+    Service="DataJS.Tests.V4.FoodStoreDataService" %>
+
+// 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.
+
+namespace DataJS.Tests.V4
+{
+    using System;
+    using System.Collections.Generic;
+    using Microsoft.OData.Service;
+    using Microsoft.OData.Service.Common;
+    using Microsoft.OData.Service.Providers;
+    using System.Linq;
+    using System.ServiceModel.Web;
+    using System.Web;
+    using System.IO;
+    using Microsoft.Spatial;
+    
+    /// <summary>
+    /// Provides a service similar to FoodStoreDataService, but uses V4 and 
WCF Data Services 6.0.0-beta1
+    /// features.
+    /// </summary>
+    [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = 
true)]
+    public class FoodStoreDataService : DataService<FoodContainer>
+    {
+        // This method is called only once to initialize service-wide policies.
+        public static void InitializeService(DataServiceConfiguration config)
+        {
+            config.SetEntitySetAccessRule("*", EntitySetRights.All);
+            config.SetServiceOperationAccessRule("*", 
ServiceOperationRights.All);
+            config.UseVerboseErrors = true;
+            // Set Foods page size to 5 for cache testing
+            config.SetEntitySetPageSize("Foods", 5);
+            // Make the Categories set paged to have a paged feed
+            config.SetEntitySetPageSize("Categories", 1);
+        }
+        
+        [WebInvoke]
+        public string ResetData()
+        {
+            this.CurrentDataSource.ResetData();
+            return "Data Reset";
+        }
+
+        [WebGet]
+        public IQueryable<string> FoodsAvailable()
+        {
+            return this.CurrentDataSource.Foods.Select(food => food.Name);
+        }
+
+        [WebGet]
+        public IQueryable<Package> PackagingTypes()
+        {
+            return this.CurrentDataSource.Foods.Select(food => food.Packaging);
+        }
+
+        [WebGet]
+        public string UserNameAndPassword()
+        {
+            var request = WebOperationContext.Current.IncomingRequest;
+            string authorization = request.Headers["Authorization"];
+            if (String.IsNullOrEmpty(authorization))
+            {
+                
WebOperationContext.Current.OutgoingResponse.Headers["WWW-Authenticate"] = 
"Basic realm=\"localhost\"";
+                throw new DataServiceException(401, "Access denied in 
UserNameAndPassword");
+            }
+
+            return authorization;
+        }
+    }
+
+    public class FoodContainer : ReflectionDataContext, IUpdatable, 
IDataServiceStreamProvider2
+    {
+        private static bool dataInitialized;
+
+        public IQueryable<Category> Categories
+        {
+            get { return 
this.GetResourceSetEntities<Category>("Categories").AsQueryable(); }
+        }
+        
+        public IQueryable<Food> Foods
+        {
+            get { return 
this.GetResourceSetEntities<Food>("Foods").AsQueryable(); }
+        }
+
+        public void ResetData()
+        {
+            this.ClearData();
+
+            var builder = 
SpatialImplementation.CurrentImplementation.CreateBuilder();
+            
builder.GeometryPipeline.SetCoordinateSystem(CoordinateSystem.DefaultGeography);
+            builder.GeometryPipeline.BeginGeometry(SpatialType.Collection);
+            builder.GeometryPipeline.BeginFigure(new GeometryPosition(5.0, 
5.0));
+            builder.GeometryPipeline.EndFigure();
+            builder.GeometryPipeline.EndGeometry();
+            
+            int i = 0;
+            Category[] categories = new Category[]
+            {
+                new Category { CategoryID = i++, Name = "Baking Supplies" },
+                new Category { CategoryID = i++, Name = "Condiments" },
+                new Category { CategoryID = i++, Name = "Empty Category" }
+            };
+            Array.ForEach(categories, (category) => 
this.GetResourceSetEntities<Category>("Categories").Add(category));
+            
+            i = 0;
+            Food[] foods = new Food[]
+            {            
+                new Food()
+                {
+                    FoodID = i++,
+                    Name = "flour",
+                    UnitPrice = .19999,
+                    ServingSize = 1,
+                    MeasurementUnit = "Cup",
+                    ProteinGrams = 3,
+                    FatGrams = 1,
+                    CarbohydrateGrams = 20,
+                    CaloriesPerServing = 140,
+                    IsAvailable = true,
+                    ExpirationDate = new DateTime(2010, 12, 25, 12, 0, 0),
+                    ItemGUID = new Guid("27272727272727272727272727272727"),
+                    Weight = 10f,
+                    AvailableUnits = 1,
+                    
+                    Packaging = new Package(){
+                        Type = null, 
+                        Color = String.Empty, 
+                        NumberPerPackage = int.MaxValue, 
+                        RequiresRefridgeration = false, 
+                        PackageDimensions = new Dimensions()
+                        {
+                            Length = Decimal.MaxValue, 
+                            Height = Int16.MaxValue, 
+                            Width = Int64.MaxValue, 
+                            Volume = double.MaxValue,   
+                        },
+                        ShipDate = new DateTime(2000, 12, 29)
+                    },
+                    
+                    CookedSize = new CookedDimensions()
+                    {
+                        Height = 1,
+                        Length = 2,
+                        Width = 3,
+                        Volume = 1 * 2 * 3
+                    },
+                    
+                    Category = categories[0],
+                    
+                    AlternativeNames = new List<string>() {"ground cereal", 
"ground grain"},
+                    
+                    Providers = new List<Provider> {
+                        new Provider() { 
+                             Name= "Flour Provider", 
+                             Aliases = new List<string>() {"fp1", "flour 
provider1"},
+                             Details = new ProviderDetails() {
+                                 Telephone= "555-555-555",
+                                 PreferredCode = 1001
+                             }
+                        },
+                        new Provider() { 
+                             Name= "Ground Grains", 
+                             Aliases = new List<string>()
+                        }
+                    },
+                    
+                    SpatialData = 
(GeometryCollection)builder.ConstructedGeometry 
+                },
+                
+                new Food()
+                {
+                    FoodID = i++,
+                    Name = "sugar",
+                    UnitPrice = .2,
+                    ServingSize = 1,
+                    MeasurementUnit = "tsp",
+                    ProteinGrams = 0,
+                    FatGrams = 0,
+                    CarbohydrateGrams = 4,
+                    CaloriesPerServing = 16,
+                    IsAvailable = false,
+                    ExpirationDate = new DateTime(2011, 12, 28),
+                    ItemGUID = new Guid("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"),
+                    Weight = 0.1f,
+                    AvailableUnits = 0,
+
+                    Packaging = new Package(){
+                        Type = " ",
+                        Color = "BLUE",
+                        NumberPerPackage = int.MinValue,
+                        RequiresRefridgeration = true,
+                        PackageDimensions = new Dimensions(){
+                            Length = Decimal.MinValue,
+                            Height = Int16.MinValue,
+                            Width = Int64.MinValue,
+                            Volume = double.MinValue,
+                        },
+                        ShipDate = new DateTime(2000, 12, 29),
+                    },
+                    
+                    Category = categories[1],
+                },
+
+                new Food()
+                {
+                    FoodID = i++,
+                    Name = "1 Chicken Egg",
+                    UnitPrice = 0.55,
+                    MeasurementUnit = null,
+                    ServingSize = 1,
+                    ProteinGrams = 6,
+                    FatGrams = 1,
+                    CarbohydrateGrams = 1,
+                    CaloriesPerServing = 70,
+                    IsAvailable = true,
+                    ExpirationDate = new DateTime(2000, 12, 29),
+                    ItemGUID = new Guid("00000000000000000000000000000000"),
+                    Weight = 0,
+                    AvailableUnits = -128,
+                    
+                    Packaging = new Package(){
+                        Type = "18     - Carton",
+                        Color = " brown ",
+                        NumberPerPackage = 0,
+                        RequiresRefridgeration = true,
+                        PackageDimensions = null,
+                        ShipDate = new DateTime(2000, 12, 29),
+                    },
+                    
+                    Category = null,
+                },
+
+                new Food()
+                {
+                    FoodID = i++,
+                    Name = "Brown Sugar",
+                    UnitPrice = 1.6,
+                    ServingSize = 1,
+                    MeasurementUnit = "TSP.",
+                    ProteinGrams = 0,
+                    FatGrams = 0,
+                    CarbohydrateGrams = 5, 
+                    CaloriesPerServing = 16,
+                    IsAvailable = true,
+                    ExpirationDate = new DateTime(2011, 12, 28),
+                    ItemGUID = new Guid("0123456789abcdef0123456789abcdef"),
+                    Weight = 4.5f,
+                    AvailableUnits = 127,
+                    Packaging = null,
+                    Category = categories[1],
+                },
+                
+                new PreparedFood()
+                {
+                    FoodID = i++,
+                    Name = "Cobb Salad",
+                    UnitPrice = 1.99,
+                    ServingSize = -1,
+                    MeasurementUnit = "cups",
+                    ProteinGrams = 6,
+                    FatGrams = 1,
+                    CarbohydrateGrams = 3, 
+                    CaloriesPerServing = 5,
+                    IsAvailable = true,
+                    ExpirationDate = new DateTime(2000, 12, 29),
+                    ItemGUID = new Guid("0123456789abcdef0123456789abcdef"),
+                    Weight = 5.674f,
+                    AvailableUnits = 127,
+                    Packaging = null,
+                    Category = categories[1],
+                    Instructions = "1.) Open 2.) Eat",
+                    NumberOfIngredients = 4,
+                },
+                
+                new PreparedFood()
+                {
+                    FoodID = i++,
+                    Name = "Lasagna",
+                    UnitPrice = 0,
+                    ServingSize = 8,
+                    MeasurementUnit = " servings",
+                    ProteinGrams = 100,
+                    FatGrams = 4,
+                    CarbohydrateGrams = 27, 
+                    CaloriesPerServing = 389,
+                    IsAvailable = true,
+                    ExpirationDate = new DateTime(1904, 2, 29),
+                    ItemGUID = new Guid("0123456789abcdef0123456789abcdef"),
+                    Weight = 0,
+                    AvailableUnits = 4,
+                    Packaging = new Package(){
+                        Type = "box",
+                        Color = " 1 ",
+                        NumberPerPackage = 1,
+                        RequiresRefridgeration = true,
+                        PackageDimensions = new Dimensions(){
+                            Length = 3,
+                            Height = 1,
+                            Width = 5,
+                            Volume = 1.5,
+                        },
+                        ShipDate = new DateTime(2000, 12, 29),
+                    },
+                    Category = categories[0],
+                    Instructions = "Bake in oven",
+                    NumberOfIngredients = 15,
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Chocolate"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Pizza"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Avocados"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Quinoa"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Oatmeal"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Peanut Butter"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Banana"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Yam"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Clam"
+                },
+                
+                new Food()
+                {                    
+                    FoodID = i++,
+                    Name = "Spam"
+                }
+            };
+            Array.ForEach(foods, (food) => 
this.GetResourceSetEntities<Food>("Foods").Add(food));
+
+            categories[0].Foods.Add(foods[0]);
+            categories[1].Foods.Add(foods[2]);
+            categories[1].Foods.Add(foods[3]);
+        }
+
+        protected override void EnsureDataIsInitialized()
+        {
+            if (!dataInitialized)
+            {
+                this.ResetData();
+                dataInitialized = true;
+            }
+        }
+
+        public Stream GetReadStream(object entity, ResourceProperty 
streamProperty, string etag, bool? checkETagForEquality, 
DataServiceOperationContext operationContext)
+        {
+            return new MemoryStream();
+        }
+
+        public Uri GetReadStreamUri(object entity, ResourceProperty 
streamProperty, DataServiceOperationContext operationContext)
+        {
+            if (streamProperty.Name == "Icon")
+            {
+                return null;
+            }
+            return new Uri(operationContext.AbsoluteServiceUri, 
streamProperty.Name);
+        }
+
+        public string GetStreamContentType(object entity, ResourceProperty 
streamProperty, DataServiceOperationContext operationContext)
+        {
+            if (streamProperty.Name == "Icon")
+            {
+                return "image/gif";
+            }
+            return "image/png";
+        }
+
+        public string GetStreamETag(object entity, ResourceProperty 
streamProperty, DataServiceOperationContext operationContext)
+        {
+            return "W/\"123456789\"";
+        }
+
+        public Stream GetWriteStream(object entity, ResourceProperty 
streamProperty, string etag, bool? checkETagForEquality, 
DataServiceOperationContext operationContext)
+        {
+            return new MemoryStream();
+        }
+
+        public void DeleteStream(object entity, DataServiceOperationContext 
operationContext)
+        {
+            // do nothing.
+        }
+
+        public Stream GetReadStream(object entity, string etag, bool? 
checkETagForEquality, DataServiceOperationContext operationContext)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Uri GetReadStreamUri(object entity, DataServiceOperationContext 
operationContext)
+        {
+            throw new NotImplementedException();
+        }
+
+        public string GetStreamContentType(object entity, 
DataServiceOperationContext operationContext)
+        {
+            throw new NotImplementedException();
+        }
+
+        public string GetStreamETag(object entity, DataServiceOperationContext 
operationContext)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Stream GetWriteStream(object entity, string etag, bool? 
checkETagForEquality, DataServiceOperationContext operationContext)
+        {
+            throw new NotImplementedException();
+        }
+
+        public string ResolveType(string entitySetName, 
DataServiceOperationContext operationContext)
+        {
+            throw new NotImplementedException();
+        }
+
+        public int StreamBufferSize
+        {
+            get { return 1024; }
+        }
+    }
+
+    /// <summary>
+    /// The Category class is a simple class with V1-compatible feed 
customizations.
+    /// </summary>
+    [DataServiceKey("CategoryID")]
+    [EntitySet("Categories")]
+    [NamedStream("Icon")]
+    public class Category
+    {
+        public Category()
+        {
+            this.Foods = new List<Food>();
+        }
+        
+        public int CategoryID { get; set; }
+        public string Name { get; set; }
+        public List<Food> Foods { get; set; }
+    }
+    
+    /// <summary>
+    /// The Food class has a mixture of V1-compatible and incompatible feed
+    /// customizations (thus it's V2), and custom mappings.
+    /// </summary>
+    [DataServiceKey("FoodID")]
+    [EntitySet("Foods")]
+    [NamedStream("Picture")]
+    public class Food
+    {
+        private List<string> alternativeNames = new List<string>();
+        private List<Provider> providers = new List<Provider>();
+        
+        // Primitive types
+        public int FoodID { get; set; }
+        public string Name { get; set; }
+        public double UnitPrice { get; set; }
+        public Decimal ServingSize { get; set; }
+        public string MeasurementUnit { get; set; }
+        public Byte ProteinGrams { get; set; }
+        public Int16 FatGrams { get; set; }
+        public Int32 CarbohydrateGrams { get; set; }
+        public Int64 CaloriesPerServing { get; set; }
+        public Boolean IsAvailable { get; set; }
+        public DateTime ExpirationDate { get; set; }
+        public Guid ItemGUID { get; set; }
+        public Single Weight { get; set; }
+        public sbyte AvailableUnits { get; set; }
+
+        // Complex types
+        public Package Packaging { get; set; }
+        public CookedDimensions CookedSize { get; set; }
+
+        // Navigation properties
+        public Category Category { get; set; }
+
+        // Collection properties
+        public List<string> AlternativeNames
+        {
+            get { return alternativeNames; }
+            set { alternativeNames = value; }
+        }
+
+        public List<Provider> Providers
+        {
+            get { return providers; }
+            set { providers = value; }
+        }
+
+        public GeometryCollection SpatialData
+        {
+            get;
+            set;
+        }
+        
+    }
+
+    public class Provider
+    {
+        public string Name { get; set; }
+        public List<string> Aliases { get; set; }
+        public ProviderDetails Details { get; set; }
+    }
+
+    public class ProviderDetails
+    {
+        public string Telephone { get; set; }
+        public int PreferredCode { get; set; }
+    }
+    
+    public class Package
+    {
+        public string Type { get; set; }
+        public string Color { get; set; }
+        public int NumberPerPackage { get; set; }
+        public Boolean RequiresRefridgeration { get; set; }
+        public DateTime ShipDate { get; set; }
+        public Dimensions PackageDimensions { get; set; }
+    }
+
+    public class Dimensions
+    {
+        public Decimal Length { get; set; }
+        public Int16 Height { get; set; }
+        public Int64 Width { get; set; }
+        public double Volume { get; set; }
+    }
+
+    public class CookedDimensions
+    {
+        public Decimal Length { get; set; }
+        public Int16 Height { get; set; }
+        public Int64 Width { get; set; }
+        public double Volume { get; set; }
+    }
+
+    public class PreparedFood : Food
+    {
+        public string Instructions { get; set; }
+        public float NumberOfIngredients { get; set; }
+    }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/80db48ba/JSLib/tests/endpoints/web.config
----------------------------------------------------------------------
diff --git a/JSLib/tests/endpoints/web.config b/JSLib/tests/endpoints/web.config
index 4875aa4..5836287 100644
--- a/JSLib/tests/endpoints/web.config
+++ b/JSLib/tests/endpoints/web.config
@@ -10,10 +10,9 @@
         <add assembly='System.Data.Entity, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=B77A5C561934E089'/>
         <add assembly='System.ServiceModel, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=B77A5C561934E089'/>
         <add assembly='System.ServiceModel.Web, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=31BF3856AD364E35'/>
-
-        <add assembly='Microsoft.Data.OData, Version=5.1, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35'/>
-        <add assembly='Microsoft.Data.Services, Version=5.1, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35'/>
-        <add assembly='Microsoft.Data.Services.Client, Version=5.1, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35'/>
+        <add assembly="Microsoft.OData.Core, Version=6.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35" />
+        <add assembly="Microsoft.OData.Service, Version=6.0.0.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
+        <add assembly="Microsoft.OData.Client, Version=6.0.0.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
       </assemblies>
     </compilation>
   </system.web>

Reply via email to