You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/04/02 15:32:16 UTC

[3/4] olingo-odata4 git commit: [OLINGO-573] Start replacement of Jetty with Tomcat

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8c6be665/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java b/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java
index 4b26b8e..6af2b29 100644
--- a/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java
+++ b/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java
@@ -19,28 +19,19 @@
 package org.apache.olingo.server.example;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
+import java.io.File;
 import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Iterator;
 
-import org.apache.olingo.commons.core.Encoder;
-import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.api.ContentProvider;
-import org.eclipse.jetty.client.api.ContentResponse;
-import org.eclipse.jetty.http.HttpMethod;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
+import org.apache.catalina.Context;
+import org.apache.catalina.startup.Tomcat;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -55,37 +46,38 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
  * of service developer.
  */
 public class TripPinServiceTest {
-  private static Server server = new Server();
+  private static Tomcat tomcat = new Tomcat();
   private static String baseURL;
-  private static HttpClient http = new HttpClient();
+  private static DefaultHttpClient http = new DefaultHttpClient();
+  private static final int TOMCAT_PORT = 9900;
 
   @BeforeClass
   public static void beforeTest() throws Exception {
-    ServerConnector connector = new ServerConnector(server);
-    server.setConnectors(new Connector[] { connector });
-
-    ServletContextHandler context = new ServletContextHandler();
-    context.setContextPath("/trippin");
-    context.addServlet(new ServletHolder(new TripPinServlet()), "/*");
-    server.setHandler(context);
-    server.start();
-    int port = connector.getLocalPort();
-    http.start();
-    baseURL = "http://localhost:"+port+"/trippin";
+    tomcat.setPort(TOMCAT_PORT);
+    File baseDir = new File(System.getProperty("java.io.tmpdir"));
+    Context cxt = tomcat.addContext("/", baseDir.getAbsolutePath());
+    Tomcat.addServlet(cxt, "trippin", new TripPinServlet());
+    cxt.addServletMapping("/*", "trippin");
+    baseURL = "http://" + tomcat.getHost().getName() + ":"+ TOMCAT_PORT;
+    tomcat.start();
   }
 
   @AfterClass
   public static void afterTest() throws Exception {
-    server.stop();
+    tomcat.stop();
+  }
+
+  private HttpHost getLocalhost() {
+    return new HttpHost(tomcat.getHost().getName(), 9900);
   }
 
   @Test
   public void testEntitySet() throws Exception {
-    ContentResponse response = http.newRequest(baseURL + "/People")
-    .header("Content-Type", "application/json;odata.metadata=minimal")
-    .method(HttpMethod.GET)
-    .send();
-    assertEquals(200, response.getStatus());
+    HttpRequest req = new HttpGet("/People");
+    req.setHeader("Content-Type", "application/json;odata.metadata=minimal");
+
+    HttpResponse response = http.execute(getLocalhost(), req);
+    assertEquals(200, response.getStatusLine().getStatusCode());
 
     JsonNode node = getJSONNode(response);
 
@@ -96,661 +88,710 @@ public class TripPinServiceTest {
     assertEquals("russellwhyte", person.get("UserName").asText());
   }
 
-  private JsonNode getJSONNode(ContentResponse response) throws IOException,
+
+  private JsonNode getJSONNode(HttpResponse response) throws IOException,
       JsonProcessingException {
     ObjectMapper objectMapper = new ObjectMapper();
-    JsonNode node = objectMapper.readTree(response.getContent());
+    JsonNode node = objectMapper.readTree(response.getEntity().getContent());
     return node;
   }
 
-  @Test
-  public void testReadEntitySetWithPaging() throws Exception {
-    ContentResponse response = http.newRequest(baseURL + "/People")
-        .header("Prefer", "odata.maxpagesize=10").send();
-
-    assertEquals(200, response.getStatus());
-
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People", node.get("@odata.context").asText());
-    assertEquals(baseURL+"/People?$skiptoken=10", node.get("@odata.nextLink").asText());
-
-    JsonNode person = ((ArrayNode)node.get("value")).get(0);
-    assertEquals("russellwhyte", person.get("UserName").asText());
-
-    assertNotNull(response.getHeaders().get("Preference-Applied"));
-  }
-
-  @Test
-  public void testReadEntityWithKey() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Airlines('AA')");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#Airlines/$entity", node.get("@odata.context").asText());
-    assertEquals("American Airlines", node.get("Name").asText());
-  }
-
-  @Test
-  public void testReadEntityWithNonExistingKey() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Airlines('OO')");
-    assertEquals(404, response.getStatus());
-  }
-
-  @Test
-  public void testRead$Count() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Airlines/$count");
-    assertEquals(200, response.getStatus());
-    assertEquals("15", response.getContentAsString());
-  }
-
-  @Test
-  public void testReadPrimitiveProperty() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Airlines('AA')/Name");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#Airlines('AA')/Name", node.get("@odata.context").asText());
-    assertEquals("American Airlines", node.get("value").asText());
-  }
-
-  @Test
-  public void testReadNonExistentProperty() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Airlines('AA')/Unknown");
-    assertEquals(404, response.getStatus());
-  }
-
-  @Test
-  public void testReadPrimitiveArrayProperty() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/People('russellwhyte')/Emails");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/Emails", node.get("@odata.context").asText());
-    assertTrue(node.get("value").isArray());
-    assertEquals("Russell@example.com", ((ArrayNode)node.get("value")).get(0).asText());
-    assertEquals("Russell@contoso.com", ((ArrayNode)node.get("value")).get(1).asText());
-  }
-
-  @Test
-  public void testReadPrimitivePropertyValue() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Airlines('AA')/Name/$value");
-    assertEquals(200, response.getStatus());
-    assertEquals("American Airlines", response.getContentAsString());
-  }
-
-  @Test @Ignore
-  // TODO: Support geometry types to make this run
-  public void testReadComplexProperty() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Airports('KSFO')/Location");
-    fail("support geometry type");
-  }
-
-  @Test
-  public void testReadComplexArrayProperty() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/People('russellwhyte')/AddressInfo");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/AddressInfo", node.get("@odata.context").asText());
-    assertTrue(node.get("value").isArray());
-    assertEquals("187 Suffolk Ln.", ((ArrayNode)node.get("value")).get(0).get("Address").asText());
-  }
-
-  @Test
-  public void testReadMedia() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Photos(1)/$value");
-    assertEquals(200, response.getStatus());
-  }
-
-  @Test
-  public void testCreateMedia() throws Exception {
-    // treating update and create as same for now, as there is details about
-    // how entity payload and media payload can be sent at same time in request's body
-    String editUrl = baseURL + "/Photos(1)/$value";
-    ContentResponse response = http.newRequest(editUrl)
-        .content(content("bytecontents"), "image/jpeg")
-        .method(HttpMethod.PUT)
-        .send();
-    assertEquals(204, response.getStatus());
-  }
-
-  @Test
-  public void testDeleteMedia() throws Exception {
-    // treating update and create as same for now, as there is details about
-    // how entity payload and media payload can be sent at same time in request's body
-    String editUrl = baseURL + "/Photos(1)/$value";
-    ContentResponse response = http.newRequest(editUrl)
-        .content(content("bytecontents"), "image/jpeg")
-        .method(HttpMethod.DELETE)
-        .send();
-    assertEquals(204, response.getStatus());
-  }
-
-  @Test
-  public void testCreateStream() throws Exception {
-    // treating update and create as same for now, as there is details about
-    // how entity payload and media payload can be sent at same time in request's body
-    String editUrl = baseURL + "/Airlines('AA')/Picture";
-    ContentResponse response = http.newRequest(editUrl)
-        .content(content("bytecontents"), "image/jpeg")
-        .method(HttpMethod.POST)
-        .send();
-    // method not allowed
-    assertEquals(405, response.getStatus());
-  }
-
-  @Test
-  public void testCreateStream2() throws Exception {
-    // treating update and create as same for now, as there is details about
-    // how entity payload and media payload can be sent at same time in request's body
-    String editUrl = baseURL + "/Airlines('AA')/Picture";
-    ContentResponse response = http.newRequest(editUrl)
-        .content(content("bytecontents"), "image/jpeg")
-        .method(HttpMethod.PUT)
-        .send();
-    assertEquals(204, response.getStatus());
-  }
-
-  @Test
-  public void testDeleteStream() throws Exception {
-    // treating update and create as same for now, as there is details about
-    // how entity payload and media payload can be sent at same time in request's body
-    String editUrl = baseURL + "/Airlines('AA')/Picture";
-    ContentResponse response = http.newRequest(editUrl)
-        .method(HttpMethod.DELETE)
-        .send();
-    assertEquals(204, response.getStatus());
-  }
-
-  @Test
-  public void testReadStream() throws Exception {
-    // treating update and create as same for now, as there is details about
-    // how entity payload and media payload can be sent at same time in request's body
-    String editUrl = baseURL + "/Airlines('AA')/Picture";
-    ContentResponse response = http.newRequest(editUrl)
-        .method(HttpMethod.GET)
-        .send();
-    assertEquals(200, response.getStatus());
-  }
-
-  @Test
-  public void testLambdaAny() throws Exception {
-    // this is just testing to see the labba expresions are going through the
-    // framework, none of the system options are not implemented in example service
-    String query = "Friends/any(d:d/UserName eq 'foo')";
-    ContentResponse response = http.newRequest(baseURL + "/People?$filter="+Encoder.encode(query))
-        .method(HttpMethod.GET)
-        .send();
-    assertEquals(200, response.getStatus());
-  }
-
-  @Test
-  public void testSingleton() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/Me");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#Me", node.get("@odata.context").asText());
-    assertEquals("russellwhyte", node.get("UserName").asText());
-  }
-
-  @Test
-  public void testSelectOption() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/People('russellwhyte')?$select=FirstName,LastName");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People(FirstName,LastName)/$entity", node.get("@odata.context").asText());
-    assertEquals("Russell", node.get("FirstName").asText());
-  }
-
-  @Test
-  public void testActionImportWithNoResponse() throws Exception {
-    ContentResponse response = http.POST(baseURL + "/ResetDataSource").send();
-    assertEquals(204, response.getStatus());
-  }
-
-  @Test
-  public void testFunctionImport() throws Exception {
-    //TODO: fails because of lack of geometery support
-    ContentResponse response = http.GET(baseURL + "/GetNearestAirport(lat=23.0,lon=34.0)");
-  }
-
-  @Test
-  public void testBadReferences() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/People('russelwhyte')/$ref");
-    assertEquals(405, response.getStatus());
-  }
-
-  @Test
-  public void testReadReferences() throws Exception {
-    ContentResponse response = http.GET(baseURL + "/People('russellwhyte')/Friends/$ref");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#Collection($ref)", node.get("@odata.context").asText());
-    assertTrue(node.get("value").isArray());
-    assertEquals("/People('scottketchum')", ((ArrayNode)node.get("value")).get(0).get("@odata.id").asText());
-  }
-
-  @Test
-  public void testAddCollectionReferences() throws Exception {
-    //GET
-    ContentResponse response = http.GET(baseURL + "/People('kristakemp')/Friends/$ref");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-
-    assertTrue(node.get("value").isArray());
-    assertEquals("/People('genevievereeves')", ((ArrayNode)node.get("value")).get(0).get("@odata.id").asText());
-    assertNull(((ArrayNode)node.get("value")).get(1));
-
-    //ADD
-    String payload = "{\n" +
-        "  \"@odata.context\": \""+baseURL+"/$metadata#Collection($ref)\",\n" +
-        "  \"value\": [\n" +
-        "    { \"@odata.id\": \"People('russellwhyte')\" },\n" +
-        "    { \"@odata.id\": \"People('scottketchum')\" } \n" +
-        "  ]\n" +
-        "}";
-    response = http.POST(baseURL + "/People('kristakemp')/Friends/$ref")
-        .content(content(payload), "application/json")
-        .send();
-    assertEquals(204, response.getStatus());
-
-    //GET
-    response = http.GET(baseURL + "/People('kristakemp')/Friends/$ref");
-    assertEquals(200, response.getStatus());
-    node = getJSONNode(response);
-
-    assertTrue(node.get("value").isArray());
-    assertEquals("/People('genevievereeves')", ((ArrayNode)node.get("value")).get(0).get("@odata.id").asText());
-    assertEquals("/People('russellwhyte')", ((ArrayNode)node.get("value")).get(1).get("@odata.id").asText());
-    assertEquals("/People('scottketchum')", ((ArrayNode)node.get("value")).get(2).get("@odata.id").asText());
-  }
-
-
-  @Test
-  public void testEntityId() throws Exception {
-    ContentResponse response = http.GET(baseURL+"/$entity?$id="+baseURL + "/People('kristakemp')");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People/$entity", node.get("@odata.context").asText());
-    assertEquals("kristakemp", node.get("UserName").asText());
-
-    // using relative URL
-    response = http.GET(baseURL+"/$entity?$id="+"People('kristakemp')");
-    assertEquals(200, response.getStatus());
-    node = getJSONNode(response);
-    assertEquals("$metadata#People/$entity", node.get("@odata.context").asText());
-    assertEquals("kristakemp", node.get("UserName").asText());
-  }
-
-  @Test
-  public void testCreateReadDeleteEntity() throws Exception {
-    String payload = "{\n" +
-        "         \"UserName\":\"olingodude\",\n" +
-        "         \"FirstName\":\"Olingo\",\n" +
-        "         \"LastName\":\"Apache\",\n" +
-        "         \"Emails\":[\n" +
-        "            \"olingo@apache.org\"\n" +
-        "         ],\n" +
-        "         \"AddressInfo\":[\n" +
-        "            {\n" +
-        "               \"Address\":\"100 apache Ln.\",\n" +
-        "               \"City\":{\n" +
-        "                  \"CountryRegion\":\"United States\",\n" +
-        "                  \"Name\":\"Boise\",\n" +
-        "                  \"Region\":\"ID\"\n" +
-        "               }\n" +
-        "            }\n" +
-        "         ],\n" +
-        "         \"Gender\":\"0\",\n" +
-        "         \"Concurrency\":635585295719432047\n" +
-        "}";
-    ContentResponse response = http.POST(baseURL + "/People")
-        .content(content(payload), "application/json")
-        .header("Prefer", "return=minimal")
-        .send();
-    // the below woud be 204, if minimal was not supplied
-    assertEquals(204, response.getStatus());
-    assertEquals("/People('olingodude')", response.getHeaders().get("Location"));
-    assertEquals("return=minimal", response.getHeaders().get("Preference-Applied"));
-
-    String location = baseURL+response.getHeaders().get("Location");
-    response = http.GET(location);
-    assertEquals(200, response.getStatus());
-
-    response = http.newRequest(location).method(HttpMethod.DELETE).send();
-    assertEquals(204, response.getStatus());
-
-    response = http.GET(location);
-    assertEquals(404, response.getStatus());
-  }
-
-
-  @Test
-  public void testCreateEntityWithLinkToRelatedEntities() throws Exception {
-    String payload = "{\n" +
-        "         \"UserName\":\"olingo\",\n" +
-        "         \"FirstName\":\"Olingo\",\n" +
-        "         \"LastName\":\"Apache\",\n" +
-        "         \"Emails\":[\n" +
-        "            \"olingo@apache.org\"\n" +
-        "         ],\n" +
-        "         \"AddressInfo\":[\n" +
-        "            {\n" +
-        "               \"Address\":\"100 apache Ln.\",\n" +
-        "               \"City\":{\n" +
-        "                  \"CountryRegion\":\"United States\",\n" +
-        "                  \"Name\":\"Boise\",\n" +
-        "                  \"Region\":\"ID\"\n" +
-        "               }\n" +
-        "            }\n" +
-        "         ],\n" +
-        "         \"Gender\":\"0\",\n" +
-        "         \"Concurrency\":635585295719432047,\n" +
-        "\"Friends@odata.bind\":[\"" +
-         baseURL+"/People('russellwhyte')\",\""+
-         baseURL+"/People('scottketchum')\""+
-        "]"+
-        "}";
-    ContentResponse response = http.POST(baseURL + "/People")
-        .content(content(payload), "application/json")
-        .header("Prefer", "return=minimal")
-        .send();
-    // the below woud be 204, if minimal was not supplied
-    assertEquals(204, response.getStatus());
-
-    response = http.GET(baseURL+"/People('olingo')/Friends");
-    assertEquals(200, response.getStatus());
-
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People", node.get("@odata.context").asText());
-    assertTrue(node.get("value").isArray());
-    assertEquals("scottketchum", ((ArrayNode)node.get("value")).get(1).get("UserName").asText());
-  }
-
-  @Test
-  public void testUpdatePrimitiveProperty() throws Exception {
-    String payload = "{"
-        + " \"value\":\"Pilar Ackerman\""
-        + "}";
-
-    String editUrl = baseURL + "/People('russellwhyte')/FirstName";
-    ContentResponse response = http.newRequest(editUrl)
-        .content(content(payload), "application/json")
-        .method(HttpMethod.PUT)
-        .send();
-    assertEquals(204, response.getStatus());
-
-    response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/FirstName", node.get("@odata.context").asText());
-    assertEquals("Pilar Ackerman", node.get("value").asText());
-  }
-
-  @Test
-  public void testUpdatePrimitiveArrayProperty() throws Exception {
-    String payload = "{"
-        + " \"value\": [\n" +
-        "       \"olingo@apache.com\"\n" +
-        "    ]"
-        + "}";
-
-    String editUrl = baseURL + "/People('russellwhyte')/Emails";
-    ContentResponse response = http.newRequest(editUrl)
-        .content(content(payload), "application/json")
-        .method(HttpMethod.PUT)
-        .send();
-    assertEquals(204, response.getStatus());
-
-    response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/Emails", node.get("@odata.context").asText());
-    assertTrue(node.get("value").isArray());
-    assertEquals("olingo@apache.com", ((ArrayNode)node.get("value")).get(0).asText());
-  }
-
-  @Test
-  public void testDeleteProperty() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/FirstName";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("Russell", node.get("value").asText());
-
-    response = http.newRequest(editUrl)
-        .method(HttpMethod.DELETE)
-        .send();
-    assertEquals(204, response.getStatus());
-
-    response = http.GET(editUrl);
-    assertEquals(204, response.getStatus());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntityCollection() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/Friends";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People", node.get("@odata.context").asText());
-
-    JsonNode person = ((ArrayNode)node.get("value")).get(0);
-    assertEquals("scottketchum", person.get("UserName").asText());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntityCollection2() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/Friends('scottketchum')/Trips";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/Friends('scottketchum')/Trips",
-        node.get("@odata.context").asText());
-    assertTrue(node.get("value").isArray());
-    assertEquals("1001", ((ArrayNode)node.get("value")).get(0).get("TripId").asText());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntity() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/Trips(1003)";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/Trips/$entity",
-        node.get("@odata.context").asText());
-    assertEquals("f94e9116-8bdd-4dac-ab61-08438d0d9a71", node.get("ShareId").asText());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntityNotExisting() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/Trips(9999)";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(204, response.getStatus());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntitySetNotExisting() throws Exception {
-    String editUrl = baseURL + "/People('jhondoe')/Trips";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('jhondoe')/Trips",
-        node.get("@odata.context").asText());
-    assertEquals(0, ((ArrayNode)node.get("value")).size());
-  }
-
-  @Test
-  public void testBadNavigationProperty() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/Unknown";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(404, response.getStatus());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntityProperty() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/Trips(1003)/PlanItems(5)/ConfirmationCode";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/Trips(1003)/PlanItems(5)/ConfirmationCode",
-        node.get("@odata.context").asText());
-
-    assertEquals("JH58494", node.get("value").asText());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntityMultipleDerivedTypes() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/Trips(1003)/PlanItems";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/Trips(1003)/PlanItems",
-        node.get("@odata.context").asText());
-
-    assertEquals("#Microsoft.OData.SampleService.Models.TripPin.Flight",
-        ((ArrayNode) node.get("value")).get(0).get("@odata.type").asText());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntityCoolectionDerivedFilter() throws Exception {
-    String editUrl = baseURL
-        + "/People('russellwhyte')/Trips(1003)/PlanItems/Microsoft.OData.SampleService.Models.TripPin.Event";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/Trips(1003)/PlanItems/"
-        + "Microsoft.OData.SampleService.Models.TripPin.Event",
-        node.get("@odata.context").asText());
-
-    assertEquals("#Microsoft.OData.SampleService.Models.TripPin.Event",
-        ((ArrayNode) node.get("value")).get(0).get("@odata.type").asText());
-  }
-
-  @Test
-  public void testReadNavigationPropertyEntityDerivedFilter() throws Exception {
-    String editUrl = baseURL+ "/People('russellwhyte')/Trips(1003)/PlanItems(56)/"
-        + "Microsoft.OData.SampleService.Models.TripPin.Event";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("$metadata#People('russellwhyte')/Trips(1003)/PlanItems/"
-        + "Microsoft.OData.SampleService.Models.TripPin.Event/$entity",
-        node.get("@odata.context").asText());
-
-    assertEquals("#Microsoft.OData.SampleService.Models.TripPin.Event", node.get("@odata.type").asText());
-    assertEquals("56", node.get("PlanItemId").asText());
-  }
-
-  @Test
-  public void testUpdateReference() throws Exception {
-    ContentResponse response = http.GET(baseURL+"/People('ronaldmundy')/Photo/$ref");
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("/Photos(12)", node.get("@odata.id").asText());
-
-    String msg = "{\n" +
-        "\"@odata.id\": \"/Photos(11)\"\n" +
-        "}";
-    String editUrl = baseURL + "/People('ronaldmundy')/Photo/$ref";
-    response = http.newRequest(editUrl)
-        .method(HttpMethod.PUT)
-        .content(content(msg))
-        .header("Content-Type", "application/json;odata.metadata=minimal")
-        .send();
-    assertEquals(204, response.getStatus());
-
-    response = http.GET(baseURL+"/People('ronaldmundy')/Photo/$ref");
-    assertEquals(200, response.getStatus());
-    node = getJSONNode(response);
-    assertEquals("/Photos(11)", node.get("@odata.id").asText());
-  }
-
-  @Test
-  public void testAddDelete2ReferenceCollection() throws Exception {
-    // add
-    String msg = "{\n" +
-        "\"@odata.id\": \"/People('russellwhyte')\"\n" +
-        "}";
-    String editUrl = baseURL + "/People('vincentcalabrese')/Friends/$ref";
-    ContentResponse response = http.newRequest(editUrl)
-        .method(HttpMethod.POST)
-        .content(content(msg))
-        .header("Content-Type", "application/json;odata.metadata=minimal")
-        .send();
-    assertEquals(204, response.getStatus());
-
-    // get
-    response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-    JsonNode node = getJSONNode(response);
-    assertEquals("/People('russellwhyte')",
-        ((ArrayNode) node.get("value")).get(2).get("@odata.id").asText());
-
-    //delete
-    response = http.newRequest(editUrl+"?$id="+baseURL+"/People('russellwhyte')")
-        .method(HttpMethod.DELETE)
-        .content(content(msg))
-        .header("Content-Type", "application/json;odata.metadata=minimal")
-        .send();
-    assertEquals(204, response.getStatus());
-
-    // get
-    response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-    node = getJSONNode(response);
-    assertNull("/People('russellwhyte')", ((ArrayNode) node.get("value")).get(2));
-  }
-
-  @Test
-  public void testDeleteReference() throws Exception {
-    String editUrl = baseURL + "/People('russellwhyte')/Photo/$ref";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-
-    response = http.newRequest(editUrl)
-        .method(HttpMethod.DELETE)
-        .send();
-    assertEquals(204, response.getStatus());
-
-    response = http.GET(editUrl);
-    assertEquals(204, response.getStatus());
-  }
-
-  @Test
-  public void testCrossJoin() throws Exception {
-    String editUrl = baseURL + "/$crossjoin(People,Airlines)";
-    ContentResponse response = http.GET(editUrl);
-    assertEquals(200, response.getStatus());
-  }
-
-  public static ContentProvider content(final String msg) {
-    return new ContentProvider() {
-      boolean hasNext = true;
-
-      @Override
-      public Iterator<ByteBuffer> iterator() {
-        return new Iterator<ByteBuffer>() {
-          @Override
-          public boolean hasNext() {
-            return hasNext;
-          }
-          @Override
-          public ByteBuffer next() {
-            hasNext = false;
-            return ByteBuffer.wrap(msg.getBytes());
-          }
-          @Override
-          public void remove() {
-          }
-        };
-      }
-      @Override
-      public long getLength() {
-        return msg.length();
-      }
-    };
-  }
+//  private static Server server = new Server();
+//  private static String baseURL;
+//  private static HttpClient http = new HttpClient();
+//
+//  @BeforeClass
+//  public static void beforeTest() throws Exception {
+//    ServerConnector connector = new ServerConnector(server);
+//    server.setConnectors(new Connector[] { connector });
+//
+//    ServletContextHandler context = new ServletContextHandler();
+//    context.setContextPath("/trippin");
+//    context.addServlet(new ServletHolder(new TripPinServlet()), "/*");
+//    server.setHandler(context);
+//    server.start();
+//    int port = connector.getLocalPort();
+//    http.start();
+//    baseURL = "http://localhost:"+port+"/trippin";
+//  }
+//
+//  @AfterClass
+//  public static void afterTest() throws Exception {
+//    server.stop();
+//  }
+//
+//  @Test
+//  public void testEntitySet() throws Exception {
+//    ContentResponse response = http.newRequest(baseURL + "/People")
+//    .header("Content-Type", "application/json;odata.metadata=minimal")
+//    .method(HttpMethod.GET)
+//    .send();
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//
+//    assertEquals("$metadata#People", node.get("@odata.context").asText());
+//    assertEquals(baseURL+"/People?$skiptoken=8", node.get("@odata.nextLink").asText());
+//
+//    JsonNode person = ((ArrayNode)node.get("value")).get(0);
+//    assertEquals("russellwhyte", person.get("UserName").asText());
+//  }
+//
+//  private JsonNode getJSONNode(ContentResponse response) throws IOException,
+//      JsonProcessingException {
+//    ObjectMapper objectMapper = new ObjectMapper();
+//    JsonNode node = objectMapper.readTree(response.getContent());
+//    return node;
+//  }
+//
+//  @Test
+//  public void testReadEntitySetWithPaging() throws Exception {
+//    ContentResponse response = http.newRequest(baseURL + "/People")
+//        .header("Prefer", "odata.maxpagesize=10").send();
+//
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People", node.get("@odata.context").asText());
+//    assertEquals(baseURL+"/People?$skiptoken=10", node.get("@odata.nextLink").asText());
+//
+//    JsonNode person = ((ArrayNode)node.get("value")).get(0);
+//    assertEquals("russellwhyte", person.get("UserName").asText());
+//
+//    assertNotNull(response.getHeaders().get("Preference-Applied"));
+//  }
+//
+//  @Test
+//  public void testReadEntityWithKey() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Airlines('AA')");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#Airlines/$entity", node.get("@odata.context").asText());
+//    assertEquals("American Airlines", node.get("Name").asText());
+//  }
+//
+//  @Test
+//  public void testReadEntityWithNonExistingKey() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Airlines('OO')");
+//    assertEquals(404, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testRead$Count() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Airlines/$count");
+//    assertEquals(200, response.getStatus());
+//    assertEquals("15", response.getContentAsString());
+//  }
+//
+//  @Test
+//  public void testReadPrimitiveProperty() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Airlines('AA')/Name");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#Airlines('AA')/Name", node.get("@odata.context").asText());
+//    assertEquals("American Airlines", node.get("value").asText());
+//  }
+//
+//  @Test
+//  public void testReadNonExistentProperty() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Airlines('AA')/Unknown");
+//    assertEquals(404, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testReadPrimitiveArrayProperty() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/People('russellwhyte')/Emails");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/Emails", node.get("@odata.context").asText());
+//    assertTrue(node.get("value").isArray());
+//    assertEquals("Russell@example.com", ((ArrayNode)node.get("value")).get(0).asText());
+//    assertEquals("Russell@contoso.com", ((ArrayNode)node.get("value")).get(1).asText());
+//  }
+//
+//  @Test
+//  public void testReadPrimitivePropertyValue() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Airlines('AA')/Name/$value");
+//    assertEquals(200, response.getStatus());
+//    assertEquals("American Airlines", response.getContentAsString());
+//  }
+//
+//  @Test @Ignore
+//  // TODO: Support geometry types to make this run
+//  public void testReadComplexProperty() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Airports('KSFO')/Location");
+//    fail("support geometry type");
+//  }
+//
+//  @Test
+//  public void testReadComplexArrayProperty() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/People('russellwhyte')/AddressInfo");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/AddressInfo", node.get("@odata.context").asText());
+//    assertTrue(node.get("value").isArray());
+//    assertEquals("187 Suffolk Ln.", ((ArrayNode)node.get("value")).get(0).get("Address").asText());
+//  }
+//
+//  @Test
+//  public void testReadMedia() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Photos(1)/$value");
+//    assertEquals(200, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testCreateMedia() throws Exception {
+//    // treating update and create as same for now, as there is details about
+//    // how entity payload and media payload can be sent at same time in request's body
+//    String editUrl = baseURL + "/Photos(1)/$value";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .content(content("bytecontents"), "image/jpeg")
+//        .method(HttpMethod.PUT)
+//        .send();
+//    assertEquals(204, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testDeleteMedia() throws Exception {
+//    // treating update and create as same for now, as there is details about
+//    // how entity payload and media payload can be sent at same time in request's body
+//    String editUrl = baseURL + "/Photos(1)/$value";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .content(content("bytecontents"), "image/jpeg")
+//        .method(HttpMethod.DELETE)
+//        .send();
+//    assertEquals(204, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testCreateStream() throws Exception {
+//    // treating update and create as same for now, as there is details about
+//    // how entity payload and media payload can be sent at same time in request's body
+//    String editUrl = baseURL + "/Airlines('AA')/Picture";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .content(content("bytecontents"), "image/jpeg")
+//        .method(HttpMethod.POST)
+//        .send();
+//    // method not allowed
+//    assertEquals(405, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testCreateStream2() throws Exception {
+//    // treating update and create as same for now, as there is details about
+//    // how entity payload and media payload can be sent at same time in request's body
+//    String editUrl = baseURL + "/Airlines('AA')/Picture";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .content(content("bytecontents"), "image/jpeg")
+//        .method(HttpMethod.PUT)
+//        .send();
+//    assertEquals(204, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testDeleteStream() throws Exception {
+//    // treating update and create as same for now, as there is details about
+//    // how entity payload and media payload can be sent at same time in request's body
+//    String editUrl = baseURL + "/Airlines('AA')/Picture";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .method(HttpMethod.DELETE)
+//        .send();
+//    assertEquals(204, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testReadStream() throws Exception {
+//    // treating update and create as same for now, as there is details about
+//    // how entity payload and media payload can be sent at same time in request's body
+//    String editUrl = baseURL + "/Airlines('AA')/Picture";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .method(HttpMethod.GET)
+//        .send();
+//    assertEquals(200, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testLambdaAny() throws Exception {
+//    // this is just testing to see the labba expresions are going through the
+//    // framework, none of the system options are not implemented in example service
+//    String query = "Friends/any(d:d/UserName eq 'foo')";
+//    ContentResponse response = http.newRequest(baseURL + "/People?$filter="+Encoder.encode(query))
+//        .method(HttpMethod.GET)
+//        .send();
+//    assertEquals(200, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testSingleton() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/Me");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#Me", node.get("@odata.context").asText());
+//    assertEquals("russellwhyte", node.get("UserName").asText());
+//  }
+//
+//  @Test
+//  public void testSelectOption() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/People('russellwhyte')?$select=FirstName,LastName");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People(FirstName,LastName)/$entity", node.get("@odata.context").asText());
+//    assertEquals("Russell", node.get("FirstName").asText());
+//  }
+//
+//  @Test
+//  public void testActionImportWithNoResponse() throws Exception {
+//    ContentResponse response = http.POST(baseURL + "/ResetDataSource").send();
+//    assertEquals(204, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testFunctionImport() throws Exception {
+//    //TODO: fails because of lack of geometery support
+//    ContentResponse response = http.GET(baseURL + "/GetNearestAirport(lat=23.0,lon=34.0)");
+//  }
+//
+//  @Test
+//  public void testBadReferences() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/People('russelwhyte')/$ref");
+//    assertEquals(405, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testReadReferences() throws Exception {
+//    ContentResponse response = http.GET(baseURL + "/People('russellwhyte')/Friends/$ref");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#Collection($ref)", node.get("@odata.context").asText());
+//    assertTrue(node.get("value").isArray());
+//    assertEquals("/People('scottketchum')", ((ArrayNode)node.get("value")).get(0).get("@odata.id").asText());
+//  }
+//
+//  @Test
+//  public void testAddCollectionReferences() throws Exception {
+//    //GET
+//    ContentResponse response = http.GET(baseURL + "/People('kristakemp')/Friends/$ref");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//
+//    assertTrue(node.get("value").isArray());
+//    assertEquals("/People('genevievereeves')", ((ArrayNode)node.get("value")).get(0).get("@odata.id").asText());
+//    assertNull(((ArrayNode)node.get("value")).get(1));
+//
+//    //ADD
+//    String payload = "{\n" +
+//        "  \"@odata.context\": \""+baseURL+"/$metadata#Collection($ref)\",\n" +
+//        "  \"value\": [\n" +
+//        "    { \"@odata.id\": \"People('russellwhyte')\" },\n" +
+//        "    { \"@odata.id\": \"People('scottketchum')\" } \n" +
+//        "  ]\n" +
+//        "}";
+//    response = http.POST(baseURL + "/People('kristakemp')/Friends/$ref")
+//        .content(content(payload), "application/json")
+//        .send();
+//    assertEquals(204, response.getStatus());
+//
+//    //GET
+//    response = http.GET(baseURL + "/People('kristakemp')/Friends/$ref");
+//    assertEquals(200, response.getStatus());
+//    node = getJSONNode(response);
+//
+//    assertTrue(node.get("value").isArray());
+//    assertEquals("/People('genevievereeves')", ((ArrayNode)node.get("value")).get(0).get("@odata.id").asText());
+//    assertEquals("/People('russellwhyte')", ((ArrayNode)node.get("value")).get(1).get("@odata.id").asText());
+//    assertEquals("/People('scottketchum')", ((ArrayNode)node.get("value")).get(2).get("@odata.id").asText());
+//  }
+//
+//
+//  @Test
+//  public void testEntityId() throws Exception {
+//    ContentResponse response = http.GET(baseURL+"/$entity?$id="+baseURL + "/People('kristakemp')");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People/$entity", node.get("@odata.context").asText());
+//    assertEquals("kristakemp", node.get("UserName").asText());
+//
+//    // using relative URL
+//    response = http.GET(baseURL+"/$entity?$id="+"People('kristakemp')");
+//    assertEquals(200, response.getStatus());
+//    node = getJSONNode(response);
+//    assertEquals("$metadata#People/$entity", node.get("@odata.context").asText());
+//    assertEquals("kristakemp", node.get("UserName").asText());
+//  }
+//
+//  @Test
+//  public void testCreateReadDeleteEntity() throws Exception {
+//    String payload = "{\n" +
+//        "         \"UserName\":\"olingodude\",\n" +
+//        "         \"FirstName\":\"Olingo\",\n" +
+//        "         \"LastName\":\"Apache\",\n" +
+//        "         \"Emails\":[\n" +
+//        "            \"olingo@apache.org\"\n" +
+//        "         ],\n" +
+//        "         \"AddressInfo\":[\n" +
+//        "            {\n" +
+//        "               \"Address\":\"100 apache Ln.\",\n" +
+//        "               \"City\":{\n" +
+//        "                  \"CountryRegion\":\"United States\",\n" +
+//        "                  \"Name\":\"Boise\",\n" +
+//        "                  \"Region\":\"ID\"\n" +
+//        "               }\n" +
+//        "            }\n" +
+//        "         ],\n" +
+//        "         \"Gender\":\"0\",\n" +
+//        "         \"Concurrency\":635585295719432047\n" +
+//        "}";
+//    ContentResponse response = http.POST(baseURL + "/People")
+//        .content(content(payload), "application/json")
+//        .header("Prefer", "return=minimal")
+//        .send();
+//    // the below woud be 204, if minimal was not supplied
+//    assertEquals(204, response.getStatus());
+//    assertEquals("/People('olingodude')", response.getHeaders().get("Location"));
+//    assertEquals("return=minimal", response.getHeaders().get("Preference-Applied"));
+//
+//    String location = baseURL+response.getHeaders().get("Location");
+//    response = http.GET(location);
+//    assertEquals(200, response.getStatus());
+//
+//    response = http.newRequest(location).method(HttpMethod.DELETE).send();
+//    assertEquals(204, response.getStatus());
+//
+//    response = http.GET(location);
+//    assertEquals(404, response.getStatus());
+//  }
+//
+//
+//  @Test
+//  public void testCreateEntityWithLinkToRelatedEntities() throws Exception {
+//    String payload = "{\n" +
+//        "         \"UserName\":\"olingo\",\n" +
+//        "         \"FirstName\":\"Olingo\",\n" +
+//        "         \"LastName\":\"Apache\",\n" +
+//        "         \"Emails\":[\n" +
+//        "            \"olingo@apache.org\"\n" +
+//        "         ],\n" +
+//        "         \"AddressInfo\":[\n" +
+//        "            {\n" +
+//        "               \"Address\":\"100 apache Ln.\",\n" +
+//        "               \"City\":{\n" +
+//        "                  \"CountryRegion\":\"United States\",\n" +
+//        "                  \"Name\":\"Boise\",\n" +
+//        "                  \"Region\":\"ID\"\n" +
+//        "               }\n" +
+//        "            }\n" +
+//        "         ],\n" +
+//        "         \"Gender\":\"0\",\n" +
+//        "         \"Concurrency\":635585295719432047,\n" +
+//        "\"Friends@odata.bind\":[\"" +
+//         baseURL+"/People('russellwhyte')\",\""+
+//         baseURL+"/People('scottketchum')\""+
+//        "]"+
+//        "}";
+//    ContentResponse response = http.POST(baseURL + "/People")
+//        .content(content(payload), "application/json")
+//        .header("Prefer", "return=minimal")
+//        .send();
+//    // the below woud be 204, if minimal was not supplied
+//    assertEquals(204, response.getStatus());
+//
+//    response = http.GET(baseURL+"/People('olingo')/Friends");
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People", node.get("@odata.context").asText());
+//    assertTrue(node.get("value").isArray());
+//    assertEquals("scottketchum", ((ArrayNode)node.get("value")).get(1).get("UserName").asText());
+//  }
+//
+//  @Test
+//  public void testUpdatePrimitiveProperty() throws Exception {
+//    String payload = "{"
+//        + " \"value\":\"Pilar Ackerman\""
+//        + "}";
+//
+//    String editUrl = baseURL + "/People('russellwhyte')/FirstName";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .content(content(payload), "application/json")
+//        .method(HttpMethod.PUT)
+//        .send();
+//    assertEquals(204, response.getStatus());
+//
+//    response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/FirstName", node.get("@odata.context").asText());
+//    assertEquals("Pilar Ackerman", node.get("value").asText());
+//  }
+//
+//  @Test
+//  public void testUpdatePrimitiveArrayProperty() throws Exception {
+//    String payload = "{"
+//        + " \"value\": [\n" +
+//        "       \"olingo@apache.com\"\n" +
+//        "    ]"
+//        + "}";
+//
+//    String editUrl = baseURL + "/People('russellwhyte')/Emails";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .content(content(payload), "application/json")
+//        .method(HttpMethod.PUT)
+//        .send();
+//    assertEquals(204, response.getStatus());
+//
+//    response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/Emails", node.get("@odata.context").asText());
+//    assertTrue(node.get("value").isArray());
+//    assertEquals("olingo@apache.com", ((ArrayNode)node.get("value")).get(0).asText());
+//  }
+//
+//  @Test
+//  public void testDeleteProperty() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/FirstName";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("Russell", node.get("value").asText());
+//
+//    response = http.newRequest(editUrl)
+//        .method(HttpMethod.DELETE)
+//        .send();
+//    assertEquals(204, response.getStatus());
+//
+//    response = http.GET(editUrl);
+//    assertEquals(204, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntityCollection() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/Friends";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People", node.get("@odata.context").asText());
+//
+//    JsonNode person = ((ArrayNode)node.get("value")).get(0);
+//    assertEquals("scottketchum", person.get("UserName").asText());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntityCollection2() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/Friends('scottketchum')/Trips";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/Friends('scottketchum')/Trips",
+//        node.get("@odata.context").asText());
+//    assertTrue(node.get("value").isArray());
+//    assertEquals("1001", ((ArrayNode)node.get("value")).get(0).get("TripId").asText());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntity() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/Trips(1003)";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/Trips/$entity",
+//        node.get("@odata.context").asText());
+//    assertEquals("f94e9116-8bdd-4dac-ab61-08438d0d9a71", node.get("ShareId").asText());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntityNotExisting() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/Trips(9999)";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(204, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntitySetNotExisting() throws Exception {
+//    String editUrl = baseURL + "/People('jhondoe')/Trips";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('jhondoe')/Trips",
+//        node.get("@odata.context").asText());
+//    assertEquals(0, ((ArrayNode)node.get("value")).size());
+//  }
+//
+//  @Test
+//  public void testBadNavigationProperty() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/Unknown";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(404, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntityProperty() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/Trips(1003)/PlanItems(5)/ConfirmationCode";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/Trips(1003)/PlanItems(5)/ConfirmationCode",
+//        node.get("@odata.context").asText());
+//
+//    assertEquals("JH58494", node.get("value").asText());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntityMultipleDerivedTypes() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/Trips(1003)/PlanItems";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/Trips(1003)/PlanItems",
+//        node.get("@odata.context").asText());
+//
+//    assertEquals("#Microsoft.OData.SampleService.Models.TripPin.Flight",
+//        ((ArrayNode) node.get("value")).get(0).get("@odata.type").asText());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntityCoolectionDerivedFilter() throws Exception {
+//    String editUrl = baseURL
+//        + "/People('russellwhyte')/Trips(1003)/PlanItems/Microsoft.OData.SampleService.Models.TripPin.Event";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/Trips(1003)/PlanItems/"
+//        + "Microsoft.OData.SampleService.Models.TripPin.Event",
+//        node.get("@odata.context").asText());
+//
+//    assertEquals("#Microsoft.OData.SampleService.Models.TripPin.Event",
+//        ((ArrayNode) node.get("value")).get(0).get("@odata.type").asText());
+//  }
+//
+//  @Test
+//  public void testReadNavigationPropertyEntityDerivedFilter() throws Exception {
+//    String editUrl = baseURL+ "/People('russellwhyte')/Trips(1003)/PlanItems(56)/"
+//        + "Microsoft.OData.SampleService.Models.TripPin.Event";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("$metadata#People('russellwhyte')/Trips(1003)/PlanItems/"
+//        + "Microsoft.OData.SampleService.Models.TripPin.Event/$entity",
+//        node.get("@odata.context").asText());
+//
+//    assertEquals("#Microsoft.OData.SampleService.Models.TripPin.Event", node.get("@odata.type").asText());
+//    assertEquals("56", node.get("PlanItemId").asText());
+//  }
+//
+//  @Test
+//  public void testUpdateReference() throws Exception {
+//    ContentResponse response = http.GET(baseURL+"/People('ronaldmundy')/Photo/$ref");
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("/Photos(12)", node.get("@odata.id").asText());
+//
+//    String msg = "{\n" +
+//        "\"@odata.id\": \"/Photos(11)\"\n" +
+//        "}";
+//    String editUrl = baseURL + "/People('ronaldmundy')/Photo/$ref";
+//    response = http.newRequest(editUrl)
+//        .method(HttpMethod.PUT)
+//        .content(content(msg))
+//        .header("Content-Type", "application/json;odata.metadata=minimal")
+//        .send();
+//    assertEquals(204, response.getStatus());
+//
+//    response = http.GET(baseURL+"/People('ronaldmundy')/Photo/$ref");
+//    assertEquals(200, response.getStatus());
+//    node = getJSONNode(response);
+//    assertEquals("/Photos(11)", node.get("@odata.id").asText());
+//  }
+//
+//  @Test
+//  public void testAddDelete2ReferenceCollection() throws Exception {
+//    // add
+//    String msg = "{\n" +
+//        "\"@odata.id\": \"/People('russellwhyte')\"\n" +
+//        "}";
+//    String editUrl = baseURL + "/People('vincentcalabrese')/Friends/$ref";
+//    ContentResponse response = http.newRequest(editUrl)
+//        .method(HttpMethod.POST)
+//        .content(content(msg))
+//        .header("Content-Type", "application/json;odata.metadata=minimal")
+//        .send();
+//    assertEquals(204, response.getStatus());
+//
+//    // get
+//    response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//    JsonNode node = getJSONNode(response);
+//    assertEquals("/People('russellwhyte')",
+//        ((ArrayNode) node.get("value")).get(2).get("@odata.id").asText());
+//
+//    //delete
+//    response = http.newRequest(editUrl+"?$id="+baseURL+"/People('russellwhyte')")
+//        .method(HttpMethod.DELETE)
+//        .content(content(msg))
+//        .header("Content-Type", "application/json;odata.metadata=minimal")
+//        .send();
+//    assertEquals(204, response.getStatus());
+//
+//    // get
+//    response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//    node = getJSONNode(response);
+//    assertNull("/People('russellwhyte')", ((ArrayNode) node.get("value")).get(2));
+//  }
+//
+//  @Test
+//  public void testDeleteReference() throws Exception {
+//    String editUrl = baseURL + "/People('russellwhyte')/Photo/$ref";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//
+//    response = http.newRequest(editUrl)
+//        .method(HttpMethod.DELETE)
+//        .send();
+//    assertEquals(204, response.getStatus());
+//
+//    response = http.GET(editUrl);
+//    assertEquals(204, response.getStatus());
+//  }
+//
+//  @Test
+//  public void testCrossJoin() throws Exception {
+//    String editUrl = baseURL + "/$crossjoin(People,Airlines)";
+//    ContentResponse response = http.GET(editUrl);
+//    assertEquals(200, response.getStatus());
+//  }
+//
+//  public static ContentProvider content(final String msg) {
+//    return new ContentProvider() {
+//      boolean hasNext = true;
+//
+//      @Override
+//      public Iterator<ByteBuffer> iterator() {
+//        return new Iterator<ByteBuffer>() {
+//          @Override
+//          public boolean hasNext() {
+//            return hasNext;
+//          }
+//          @Override
+//          public ByteBuffer next() {
+//            hasNext = false;
+//            return ByteBuffer.wrap(msg.getBytes());
+//          }
+//          @Override
+//          public void remove() {
+//          }
+//        };
+//      }
+//      @Override
+//      public long getLength() {
+//        return msg.length();
+//      }
+//    };
+//  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8c6be665/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b2e16f3..00ebf8a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,7 +95,9 @@
     <tomcat.servlet.port>9080</tomcat.servlet.port>
     <tomcat.version>7.0.55</tomcat.version>
 
+    <!-- Project build settings -->
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <project.build.source>1.6</project.build.source>
   </properties>
 
   <dependencyManagement>
@@ -291,7 +293,6 @@
   </dependencyManagement>
 
   <build>
-
     <finalName>${project.name}-${project.version}</finalName>
 
     <pluginManagement>
@@ -463,8 +464,8 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>${project.build.source}</source>
+          <target>${project.build.source}</target>
           <showWarnings>true</showWarnings>
           <showDeprecation>true</showDeprecation>
           <compilerArgument>-Xlint:unchecked</compilerArgument>