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/09/08 18:39:58 UTC

[41/55] [abbrv] olingo-odata4 git commit: [OLINGO-659] Removed v4 from package and class names

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/FilterTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/FilterTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/FilterTestITCase.java
new file mode 100644
index 0000000..d9f3c9d
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/FilterTestITCase.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.olingo.ext.proxy.api.Search;
+import org.apache.olingo.ext.proxy.api.Sort;
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.Employee;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.EmployeeCollection;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.People;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.Person;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.PersonCollection;
+import org.junit.Test;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public class FilterTestITCase extends AbstractTestITCase {
+
+  @Test
+  public void testFilterWithEntityType() {
+    final People people = container.getPeople();
+    final EmployeeCollection response = people.filter(service.getClient().getFilterFactory().lt("PersonID", 4))
+        .execute(EmployeeCollection.class);
+
+    assertEquals(1, response.size());
+
+    for (final Employee employee : response) {
+      assertEquals(Integer.valueOf(3), employee.getPersonID());
+    }
+  }
+
+  @Test
+  public void filterOrderby() {
+    final People people = container.getPeople();
+
+    PersonCollection result =
+        people.filter(service.getClient().getFilterFactory().lt("PersonID", 3)).execute();
+
+    // 1. check that result looks as expected
+    assertEquals(2, result.size());
+
+    // 2. extract PersonID values - sorted ASC by default
+    final List<Integer> former = new ArrayList<Integer>(2);
+    for (Person person : result) {
+      final Integer personID = person.getPersonID();
+      assertTrue(personID < 3);
+      former.add(personID);
+    }
+
+    // 3. add orderby clause to filter above
+    result = people.orderBy(new Sort("PersonID", Sort.Direction.DESC)).execute();
+    assertEquals(2, result.size());
+
+    // 4. extract again VIN value - now they were required to be sorted DESC
+    final List<Integer> latter = new ArrayList<Integer>(2);
+    for (Person person : result) {
+      final Integer personID = person.getPersonID();
+      assertTrue(personID < 3);
+      latter.add(personID);
+    }
+
+    // 5. reverse latter and expect to be equal to former
+    Collections.reverse(latter);
+    assertEquals(former, latter);
+  }
+
+  @Test
+  public void search() {
+    final Search<Person, PersonCollection> search = container.getPeople().createSearch().setSearch(
+        service.getClient().getSearchFactory().or(
+            service.getClient().getSearchFactory().literal("Bob"),
+            service.getClient().getSearchFactory().literal("Jill")));
+
+    final PersonCollection result = search.getResult();
+    assertFalse(result.isEmpty());
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/KeyAsSegmentTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/KeyAsSegmentTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/KeyAsSegmentTestITCase.java
new file mode 100644
index 0000000..bc57529
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/KeyAsSegmentTestITCase.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.fit.proxy.staticservice.Service;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.InMemoryEntities;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.Person;
+import org.junit.Test;
+
+public class KeyAsSegmentTestITCase extends AbstractTestITCase {
+
+  private Service<EdmEnabledODataClient> ecf;
+
+  private InMemoryEntities ime;
+
+  protected Service<EdmEnabledODataClient> getService() {
+    if (ecf == null) {
+      ecf = Service.getV4(testKeyAsSegmentServiceRootURL);
+      ecf.getClient().getConfiguration().setKeyAsSegment(true);
+      ecf.getClient().getConfiguration().setDefaultBatchAcceptFormat(ContentType.APPLICATION_OCTET_STREAM);
+    }
+    return ecf;
+  }
+
+  protected InMemoryEntities getContainer() {
+    if (ime == null) {
+      ime = getService().getEntityContainer(InMemoryEntities.class);
+    }
+    return ime;
+  }
+
+  @Test
+  public void read() {
+    assertNotNull(getContainer().getAccounts().getByKey(101));
+  }
+
+  @Test
+  public void createAndDelete() {
+    createPatchAndDeleteOrder(getContainer(), getService());
+  }
+
+  @Test
+  public void update() {
+    Person person = getContainer().getPeople().getByKey(5);
+    person.setMiddleName("middleN");
+
+    container.flush();
+
+    person = getContainer().getPeople().getByKey(5);
+    assertEquals("middleN", person.getMiddleName());
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/MediaEntityTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/MediaEntityTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/MediaEntityTestITCase.java
new file mode 100644
index 0000000..f2cb7fb
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/MediaEntityTestITCase.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.UUID;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.ext.proxy.api.EdmStreamValue;
+import org.apache.olingo.fit.proxy.demo.Service;
+import org.apache.olingo.fit.proxy.demo.odatademo.DemoService;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Advertisement;
+import org.junit.Test;
+
+/**
+ * This is the unit test class to check media entity retrieve operations.
+ */
+public class MediaEntityTestITCase extends AbstractTestITCase {
+
+  private Service<EdmEnabledODataClient> ecf;
+
+  private DemoService ime;
+
+  protected Service<EdmEnabledODataClient> getService() {
+    if (ecf == null) {
+      ecf = Service.getV4(testDemoServiceRootURL);
+      ecf.getClient().getConfiguration().setDefaultBatchAcceptFormat(ContentType.APPLICATION_OCTET_STREAM);
+    }
+    return ecf;
+  }
+
+  protected DemoService getContainer() {
+    if (ime == null) {
+      ime = getService().getEntityContainer(DemoService.class);
+    }
+    return ime;
+  }
+
+  @Test
+  public void read() throws IOException {
+    final UUID uuid = UUID.fromString("f89dee73-af9f-4cd4-b330-db93c25ff3c7");
+
+    final Advertisement adv = getContainer().getAdvertisements().getByKey(uuid);
+    assertNull(adv.getAirDate()); // No HTTP request --> property null
+
+    final EdmStreamValue res = adv.loadStream();
+    assertEquals("application/octet-stream", res.getContentType());
+    assertNotNull(res.getStream());
+    IOUtils.closeQuietly(res.getStream());
+
+    getService().getContext().detachAll();
+  }
+
+  @Test
+  public void update() throws IOException {
+    final UUID uuid = UUID.fromString("f89dee73-af9f-4cd4-b330-db93c25ff3c7");
+    final Advertisement adv = getContainer().getAdvertisements().getByKey(uuid);
+    final String random = RandomStringUtils.random(124, "abcdefghijklmnopqrstuvwxyz");
+    adv.uploadStream(getContainer().newEdmStreamValue("application/octet-stream", IOUtils.toInputStream(random)));
+    getContainer().flush();
+    assertEquals(random,
+        IOUtils.toString(getContainer().getAdvertisements().getByKey(uuid).loadStream().getStream()));
+    getService().getContext().detachAll();
+  }
+
+  @Test
+  public void create() throws IOException {
+    final String random = RandomStringUtils.random(124, "abcdefghijklmnopqrstuvwxyz");
+
+    final Advertisement adv = getContainer().newEntityInstance(Advertisement.class);
+    adv.uploadStream(getContainer().newEdmStreamValue("application/octet-stream", IOUtils.toInputStream(random)));
+    adv.setAirDate(new Timestamp(Calendar.getInstance().getTimeInMillis()));
+
+    getContainer().getAdvertisements().add(adv);
+    getContainer().flush();
+
+    final UUID uuid = adv.getID();
+    getService().getContext().detachAll();
+
+    assertEquals(random, IOUtils.toString(getContainer().getAdvertisements().getByKey(uuid).loadStream().getStream()));
+
+    getService().getContext().detachAll();
+
+    getContainer().getAdvertisements().delete(uuid);
+    getContainer().flush();
+
+    try {
+      getContainer().getAdvertisements().getByKey(uuid).load();
+      fail();
+    } catch (IllegalArgumentException e) {
+      // expected
+    }
+    getService().getContext().detachAll();
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalAuthEntityCreateTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalAuthEntityCreateTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalAuthEntityCreateTestITCase.java
new file mode 100644
index 0000000..60c4c12
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalAuthEntityCreateTestITCase.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.client.core.http.BasicAuthHttpClientFactory;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.fit.proxy.staticservice.Service;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.InMemoryEntities;
+
+public class NonTransactionalAuthEntityCreateTestITCase extends EntityCreateTestITCase {
+
+  private Service<EdmEnabledODataClient> ecf;
+
+  private InMemoryEntities ime;
+
+  @Override
+  protected Service<EdmEnabledODataClient> getService() {
+    if (ecf == null) {
+      ecf = Service.getV4(testAuthServiceRootURL, false);
+      ecf.getClient().getConfiguration().setDefaultBatchAcceptFormat(ContentType.APPLICATION_OCTET_STREAM);
+      ecf.getClient().getConfiguration().
+          setHttpClientFactory(new BasicAuthHttpClientFactory("odatajclient", "odatajclient"));
+    }
+    return ecf;
+  }
+
+  @Override
+  protected InMemoryEntities getContainer() {
+    if (ime == null) {
+      ime = getService().getEntityContainer(InMemoryEntities.class);
+    }
+    return ime;
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalEntityCreateTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalEntityCreateTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalEntityCreateTestITCase.java
new file mode 100644
index 0000000..9b797ce
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalEntityCreateTestITCase.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.fit.proxy.staticservice.Service;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.InMemoryEntities;
+
+public class NonTransactionalEntityCreateTestITCase extends EntityCreateTestITCase {
+
+  private Service<EdmEnabledODataClient> ecf;
+
+  private InMemoryEntities ime;
+
+  @Override
+  protected Service<EdmEnabledODataClient> getService() {
+    if (ecf == null) {
+      ecf = Service.getV4(testStaticServiceRootURL, false);
+      ecf.getClient().getConfiguration().setDefaultBatchAcceptFormat(ContentType.APPLICATION_OCTET_STREAM);
+    }
+    return ecf;
+  }
+
+  @Override
+  protected InMemoryEntities getContainer() {
+    if (ime == null) {
+      ime = getService().getEntityContainer(InMemoryEntities.class);
+    }
+    return ime;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalEntityUpdateTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalEntityUpdateTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalEntityUpdateTestITCase.java
new file mode 100644
index 0000000..0ed093c
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalEntityUpdateTestITCase.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.fit.proxy.staticservice.Service;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.InMemoryEntities;
+
+public class NonTransactionalEntityUpdateTestITCase extends EntityUpdateTestITCase {
+
+  private Service<EdmEnabledODataClient> ecf;
+
+  private InMemoryEntities ime;
+
+  @Override
+  protected Service<EdmEnabledODataClient> getService() {
+    if (ecf == null) {
+      ecf = Service.getV4(testStaticServiceRootURL, false);
+      ecf.getClient().getConfiguration().setDefaultBatchAcceptFormat(ContentType.APPLICATION_OCTET_STREAM);
+    }
+    return ecf;
+  }
+
+  @Override
+  protected InMemoryEntities getContainer() {
+    if (ime == null) {
+      ime = getService().getEntityContainer(InMemoryEntities.class);
+    }
+    return ime;
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalMediaEntityTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalMediaEntityTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalMediaEntityTestITCase.java
new file mode 100644
index 0000000..e0b2bd3
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/NonTransactionalMediaEntityTestITCase.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.fit.proxy.demo.Service;
+import org.apache.olingo.fit.proxy.demo.odatademo.DemoService;
+
+public class NonTransactionalMediaEntityTestITCase extends MediaEntityTestITCase {
+
+  private Service<EdmEnabledODataClient> ecf;
+
+  private DemoService ime;
+
+  @Override
+  protected Service<EdmEnabledODataClient> getService() {
+    if (ecf == null) {
+      ecf = Service.getV4(testDemoServiceRootURL, false);
+      ecf.getClient().getConfiguration().setDefaultBatchAcceptFormat(ContentType.APPLICATION_OCTET_STREAM);
+    }
+    return ecf;
+  }
+
+  @Override
+  protected DemoService getContainer() {
+    if (ime == null) {
+      ime = getService().getEntityContainer(DemoService.class);
+    }
+    return ime;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/OpenTypeTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/OpenTypeTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/OpenTypeTestITCase.java
new file mode 100644
index 0000000..42626b5
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/OpenTypeTestITCase.java
@@ -0,0 +1,156 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.UUID;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.fit.proxy.opentype.Service;
+import org.apache.olingo.fit.proxy.opentype.microsoft.test.odata.services.opentypesservice.DefaultContainer;
+import org.apache.olingo.fit.proxy.opentype.microsoft.test.odata.services.opentypesservice.types.AccountInfo;
+import org.apache.olingo.fit.proxy.opentype.microsoft.test.odata.services.opentypesservice.types.Color;
+import org.apache.olingo.fit.proxy.opentype.microsoft.test.odata.services.opentypesservice.types.ContactDetails;
+import org.apache.olingo.fit.proxy.opentype.microsoft.test.odata.services.opentypesservice.types.IndexedRow;
+import org.apache.olingo.fit.proxy.opentype.microsoft.test.odata.services.opentypesservice.types.Row;
+import org.apache.olingo.fit.proxy.opentype.microsoft.test.odata.services.opentypesservice.types.RowIndex;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class OpenTypeTestITCase extends AbstractTestITCase {
+
+  private static Service<EdmEnabledODataClient> otservice;
+
+  private static DefaultContainer otcontainer;
+
+  @BeforeClass
+  public static void initContainer() {
+    otservice = Service.getV4(testOpenTypeServiceRootURL);
+    otservice.getClient().getConfiguration().
+        setDefaultBatchAcceptFormat(ContentType.APPLICATION_OCTET_STREAM);
+    otcontainer = otservice.getEntityContainer(DefaultContainer.class);
+    assertNotNull(otcontainer);
+  }
+
+  @Test
+  public void checkOpenTypeEntityTypesExist() {
+    assertTrue(otcontainer.newEntityInstance(Row.class).getClass().getInterfaces()[0].
+        getAnnotation(EntityType.class).openType());
+    assertTrue(otcontainer.newEntityInstance(RowIndex.class).getClass().getInterfaces()[0].
+        getAnnotation(EntityType.class).openType());
+    assertTrue(otcontainer.newEntityInstance(IndexedRow.class).getClass().getInterfaces()[0].
+        getAnnotation(EntityType.class).openType());
+    otservice.getContext().detachAll();
+  }
+
+  @Test
+  public void read() {
+    Row row = otcontainer.getRow().getByKey(UUID.fromString("71f7d0dc-ede4-45eb-b421-555a2aa1e58f")).load();
+    assertEquals(Double.class, row.readAdditionalProperty("Double").getClass());
+    assertEquals("71f7d0dc-ede4-45eb-b421-555a2aa1e58f", row.getId().toString());
+
+    row = otcontainer.getRow().getByKey(UUID.fromString("672b8250-1e6e-4785-80cf-b94b572e42b3")).load();
+    assertEquals(BigDecimal.class, row.readAdditionalProperty("Decimal").getClass());
+  }
+
+  @Test
+  public void cud() throws ParseException {
+    final Integer id = 1426;
+
+    RowIndex rowIndex = otcontainer.newEntityInstance(RowIndex.class);
+    rowIndex.setId(id);
+    rowIndex.addAdditionalProperty("aString", "string");
+    rowIndex.addAdditionalProperty("aBoolean", true);
+    rowIndex.addAdditionalProperty("aDouble", 1.5D);
+    rowIndex.addAdditionalProperty("aByte", Byte.MAX_VALUE);
+    rowIndex.addAdditionalProperty("aDate", Calendar.getInstance());
+
+    final ContactDetails contact = otcontainer.newComplexInstance(ContactDetails.class);
+    contact.setFirstContacted("text".getBytes());
+
+    Calendar cal = Calendar.getInstance();
+    cal.clear();
+    cal.setTime(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").parse("2001-04-05T05:05:05.001"));
+
+    contact.setLastContacted(new Timestamp(cal.getTimeInMillis()));
+
+    cal = Calendar.getInstance();
+    cal.clear();
+    cal.setTime(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").parse("2001-04-05T05:05:04.001"));
+    contact.setContacted(cal);
+
+    contact.setGUID(UUID.randomUUID());
+    contact.setPreferedContactTime(cal);
+    contact.setByte(Short.valueOf("24"));
+    contact.setSignedByte(Byte.MAX_VALUE);
+    contact.setDouble(Double.valueOf(Double.MAX_VALUE));
+    contact.setSingle(Float.MAX_VALUE);
+    contact.setShort(Short.MAX_VALUE);
+    contact.setInt(Integer.MAX_VALUE);
+    rowIndex.addAdditionalProperty("aContact", contact);
+    rowIndex.addAdditionalProperty("aColor", Color.Green);
+
+    final AccountInfo ai = otcontainer.newComplexInstance(AccountInfo.class);
+    ai.setFirstName("Fabio");
+    ai.setLastName("Martelli");
+    ai.addAdditionalProperty("email", "fabio.martelli@tirasa.net");
+    rowIndex.addAdditionalProperty("info", ai);
+
+    otcontainer.getRowIndex().add(rowIndex);
+    otcontainer.flush();
+
+    rowIndex = otcontainer.getRowIndex().getByKey(id).load();
+    assertEquals(String.class, rowIndex.readAdditionalProperty("aString").getClass());
+    assertEquals(Boolean.class, rowIndex.readAdditionalProperty("aBoolean").getClass());
+    assertEquals(Double.class, rowIndex.readAdditionalProperty("aDouble").getClass());
+    assertEquals(Byte.class, rowIndex.readAdditionalProperty("aByte").getClass());
+    assertEquals(Byte.MAX_VALUE, rowIndex.readAdditionalProperty("aByte"));
+    assertTrue(Calendar.class.isAssignableFrom(rowIndex.readAdditionalProperty("aDate").getClass()));
+    assertEquals(ContactDetails.class, rowIndex.readAdditionalProperty("aContact").getClass().getInterfaces()[0]);
+    assertEquals(Color.class, rowIndex.readAdditionalProperty("aColor").getClass());
+    assertEquals(Color.Green, rowIndex.readAdditionalProperty("aColor"));
+    assertEquals("Fabio", AccountInfo.class.cast(rowIndex.readAdditionalProperty("info")).getFirstName());
+    assertEquals("Martelli", AccountInfo.class.cast(rowIndex.readAdditionalProperty("info")).getLastName());
+    assertEquals("fabio.martelli@tirasa.net", AccountInfo.class.cast(rowIndex.readAdditionalProperty("info")).
+        readAdditionalProperty("email"));
+
+    otservice.getContext().detachAll();
+
+    otcontainer.getRowIndex().delete(id);
+    otcontainer.flush();
+
+    try {
+      otcontainer.getRowIndex().getByKey(id).load();
+      fail();
+    } catch (IllegalArgumentException e) {
+      // Expected
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/OperationImportInvokeTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/OperationImportInvokeTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/OperationImportInvokeTestITCase.java
new file mode 100644
index 0000000..e30ffb6
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/OperationImportInvokeTestITCase.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.olingo.ext.proxy.api.PrimitiveCollection;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types
+        .PersonComposableInvoker;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types
+        .ProductCollectionComposableInvoker;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.AccessLevel;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.Address;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.Color;
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.HomeAddress;
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.junit.Assert;
+import org.junit.Test;
+
+public class OperationImportInvokeTestITCase extends AbstractTestITCase {
+
+  @Test
+  public void getDefaultColor() {
+    final Color color = container.operations().getDefaultColor().execute();
+    assertEquals(Color.Red, color);
+  }
+
+  @Test
+  public void getPerson2() {
+    final PersonComposableInvoker person = container.operations().getPerson2("London");
+    assertEquals(1, person.execute().getPersonID(), 0);
+  }
+
+  @Test
+  public void getPerson() {
+    final Address address = container.newComplexInstance(HomeAddress.class);
+    address.setStreet("1 Microsoft Way");
+    address.setPostalCode("98052");
+    address.setCity("London");
+
+    final PersonComposableInvoker person = container.operations().getPerson(address);
+    assertEquals(1, person.execute().getPersonID(), 0);
+  }
+
+  @Test
+  public void getAllProducts() {
+    final ProductCollectionComposableInvoker products = container.operations().getAllProducts();
+    Assert.assertEquals(5, products.execute().size());
+  }
+
+  @Test
+  public void getProductsByAccessLevel() {
+    final PrimitiveCollection<String> products =
+        container.operations().getProductsByAccessLevel(AccessLevel.None).execute();
+    assertEquals(5, products.size());
+    assertTrue(products.contains("Car"));
+  }
+
+  @Test
+  public void discount() {
+    container.operations().discount(22).execute();
+  }
+
+  @Test
+  public void resetBossAddress() {
+    final Address address = container.newComplexInstance(HomeAddress.class);
+    address.setStreet("Via Le Mani Dal Naso, 123");
+    address.setPostalCode("Tollo");
+    address.setCity("66010");
+
+    final Address actual = container.operations().resetBossAddress(address).execute();
+    assertEquals(address.getStreet(), actual.getStreet());
+    assertEquals(address.getPostalCode(), actual.getPostalCode());
+    assertEquals(address.getCity(), actual.getCity());
+  }
+
+  @Test
+  public void bossEmails() {
+    PrimitiveCollection<String> be = container.newPrimitiveCollection(String.class);
+    be.add("first@olingo.apache.org");
+    be.add("second@olingo.apache.org");
+
+    final PrimitiveCollection<String> result = container.operations().resetBossEmail(be).execute();
+    assertEquals(2, result.size());
+
+    final PrimitiveCollection<String> result2 = container.operations().getBossEmails(0, 100).execute();
+    assertEquals(result, result2);
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/PropertyTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/PropertyTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/PropertyTestITCase.java
new file mode 100644
index 0000000..015161a
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/PropertyTestITCase.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import org.apache.olingo.ext.proxy.api.ODataFlushException;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.Customer;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.StoredPI;
+import org.junit.Test;
+
+/**
+ * This is the unit test class to check actions overloading.
+ */
+public class PropertyTestITCase extends AbstractTestITCase {
+
+  @Test
+  public void nullNullableProperty() {
+    final Customer customer = container.getCustomers().getByKey(1);
+    customer.setFirstName(null);
+    container.flush();
+
+    assertNull(container.getCustomers().getByKey(1).getFirstName());
+  }
+
+  @Test
+  public void nullNonNullableProperty() {
+    final StoredPI storedPI = container.getStoredPIs().getByKey(1000);
+    storedPI.setPIName(null);
+
+    try {
+      container.flush();
+      fail();
+    } catch (ODataFlushException e) {
+      assertNotNull(e);
+    }
+    service.getContext().detachAll();
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/SingletonTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/SingletonTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/SingletonTestITCase.java
new file mode 100644
index 0000000..fab7a14
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/SingletonTestITCase.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.olingo.ext.proxy.api.Annotatable;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.Company;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.CompanyCategory;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.IsBoss;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.types.Person;
+import org.junit.Test;
+
+public class SingletonTestITCase extends AbstractTestITCase {
+
+  @Test
+  public void read() {
+    final Company company = container.getCompany().load();
+    assertEquals(0, company.getCompanyID(), 0);
+    assertEquals(CompanyCategory.IT, company.getCompanyCategory());
+  }
+
+  @Test
+  public void update() {
+    final Company company = container.getCompany().load();
+    company.setRevenue(132520L);
+
+    container.flush();
+
+    assertEquals(132520L, container.getCompany().load().getRevenue(), 0);
+  }
+
+  @Test
+  public void readWithAnnotations() {
+    final Company company = container.getCompany().load();
+    assertTrue(company.readAnnotationTerms().isEmpty());
+
+    final Person boss = container.getBoss().load();
+    assertEquals(2, boss.getPersonID(), 0);
+
+    assertEquals(1, boss.readAnnotationTerms().size());
+    Object isBoss = boss.readAnnotation(IsBoss.class);
+    assertTrue(isBoss instanceof Boolean);
+    assertTrue((Boolean) isBoss);
+
+    Annotatable annotations = boss.annotations().getFirstNameAnnotations();
+    assertTrue(annotations.readAnnotationTerms().isEmpty());
+
+    annotations = boss.annotations().getLastNameAnnotations();
+    isBoss = annotations.readAnnotation(IsBoss.class);
+    assertTrue(isBoss instanceof Boolean);
+    assertFalse((Boolean) isBoss);
+
+    annotations = boss.annotations().getParentAnnotations();
+    isBoss = annotations.readAnnotation(IsBoss.class);
+    assertTrue(isBoss instanceof Boolean);
+    assertFalse((Boolean) isBoss);
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/UnauthorizedEntityCreateTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/UnauthorizedEntityCreateTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/UnauthorizedEntityCreateTestITCase.java
new file mode 100644
index 0000000..93906ef
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/UnauthorizedEntityCreateTestITCase.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.client.api.http.HttpClientException;
+import org.apache.olingo.client.core.http.BasicAuthHttpClientFactory;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.fit.proxy.staticservice.Service;
+import org.apache.olingo.fit.proxy.staticservice.microsoft.test.odata.services.odatawcfservice.InMemoryEntities;
+import org.junit.Test;
+
+public class UnauthorizedEntityCreateTestITCase extends AbstractTestITCase {
+
+  private Service<EdmEnabledODataClient> ecf;
+
+  private InMemoryEntities ime;
+
+  public Service<EdmEnabledODataClient> getService() {
+    if (ecf == null) {
+      ecf = Service.getV4(testAuthServiceRootURL);
+      ecf.getClient().getConfiguration().setDefaultBatchAcceptFormat(ContentType.APPLICATION_OCTET_STREAM);
+      ecf.getClient().getConfiguration().
+          setHttpClientFactory(new BasicAuthHttpClientFactory("not_auth", "not_auth"));
+    }
+    return ecf;
+  }
+
+  @Test(expected = HttpClientException.class)
+  public void unauthorizedCreate() {
+    createPatchAndDeleteOrder(getContainer(), getService());
+  }
+
+  protected InMemoryEntities getContainer() {
+    if (ime == null) {
+      ime = getService().getEntityContainer(InMemoryEntities.class);
+    }
+    return ime;
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/Service.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/Service.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/Service.java
new file mode 100644
index 0000000..4cbc29f
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/Service.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.ext.proxy.AbstractService;
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Address;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Advertisement;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Category;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Customer;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Employee;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.FeaturedProduct;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Person;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.PersonDetail;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Product;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.ProductDetail;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Supplier;
+
+public class Service<C extends EdmEnabledODataClient> extends AbstractService<C> {
+
+  // CHECKSTYLE:OFF (Maven checkstyle)
+  private static final String COMPRESSED_METADATA =
+      "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";
+  private static final String METADATA_ETAG = null;
+  // CHECKSTYLE:ON (Maven checkstyle)
+
+  private static final Map<String, Service<?>> SERVICES = new ConcurrentHashMap<String, Service<?>>();
+
+  @SuppressWarnings("unchecked")
+  private static <C extends EdmEnabledODataClient> Service<C> getInstance(
+      final ODataServiceVersion version, final String serviceRoot, final boolean transactional) {
+
+    if (!SERVICES.containsKey(serviceRoot)) {
+      final Service<C> instance = new Service<C>(COMPRESSED_METADATA, METADATA_ETAG,
+          version, serviceRoot, transactional);
+      SERVICES.put(serviceRoot, instance);
+    }
+
+    return (Service<C>) SERVICES.get(serviceRoot);
+  }
+
+  /**
+   * Gives an OData 4.0 instance for given service root, operating in transactions (with batch requests).
+   *
+   * @param serviceRoot OData service root
+   * @return OData 4.0 instance for given service root, operating in transactions (with batch requests)
+   */
+  public static Service<org.apache.olingo.client.api.EdmEnabledODataClient> getV4(
+      final String serviceRoot) {
+
+    return getV4(serviceRoot, true);
+  }
+
+  /**
+   * Gives an OData 4.0 instance for given service root.
+   *
+   * @param serviceRoot OData service root
+   * @param transactional whether operating in transactions (with batch requests) or not
+   * @return OData 4.0 instance for given service root
+   */
+  public static Service<org.apache.olingo.client.api.EdmEnabledODataClient> getV4(
+      final String serviceRoot, final boolean transactional) {
+
+    return getInstance(ODataServiceVersion.V40, serviceRoot, transactional);
+  }
+
+  private final Map<String, Class<?>> entityTypes = new HashMap<String, Class<?>>();
+
+  private final Map<String, Class<?>> complexTypes = new HashMap<String, Class<?>>();
+
+  private final Map<String, Class<?>> enumTypes = new HashMap<String, Class<?>>();
+
+  private final Map<String, Class<? extends AbstractTerm>> terms = new HashMap<String, Class<? extends AbstractTerm>>();
+
+  public Service(final String compressedMetadata, final String metadataETag,
+      final ODataServiceVersion version, final String serviceRoot, final boolean transactional) {
+
+    super(compressedMetadata, metadataETag, version, serviceRoot, transactional);
+
+    // CHECKSTYLE:OFF (Maven checkstyle)
+    entityTypes.put("ODataDemo.Customer", Customer.class);
+    entityTypes.put("ODataDemo.PersonDetail", PersonDetail.class);
+    entityTypes.put("ODataDemo.ProductDetail", ProductDetail.class);
+    entityTypes.put("ODataDemo.Employee", Employee.class);
+    entityTypes.put("ODataDemo.Product", Product.class);
+    entityTypes.put("ODataDemo.Advertisement", Advertisement.class);
+    entityTypes.put("ODataDemo.Category", Category.class);
+    entityTypes.put("ODataDemo.Person", Person.class);
+    entityTypes.put("ODataDemo.Supplier", Supplier.class);
+    entityTypes.put("ODataDemo.FeaturedProduct",
+        FeaturedProduct.class);
+    complexTypes.put("ODataDemo.Address", Address.class);
+    // CHECKSTYLE:ON (Maven checkstyle)
+  }
+
+  @Override
+  public Class<?> getEntityTypeClass(final String name) {
+    return entityTypes.get(name);
+  }
+
+  @Override
+  public Class<?> getComplexTypeClass(final String name) {
+    return complexTypes.get(name);
+  }
+
+  @Override
+  public Class<?> getEnumTypeClass(final String name) {
+    return enumTypes.get(name);
+  }
+
+  @Override
+  public Class<? extends AbstractTerm> getTermClass(final String name) {
+    return terms.get(name);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Advertisements.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Advertisements.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Advertisements.java
new file mode 100644
index 0000000..a1e9a94
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Advertisements.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Advertisement;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.AdvertisementCollection;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Advertisements", container = "ODataDemo.DemoService")
+public interface Advertisements
+    extends
+    org.apache.olingo.ext.proxy.api.EntitySet<Advertisement, AdvertisementCollection>,
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<Advertisements>,
+    AbstractEntitySet<Advertisement, java.util.UUID, AdvertisementCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Categories.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Categories.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Categories.java
new file mode 100644
index 0000000..9aeb012
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Categories.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Category;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.CategoryCollection;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Categories", container = "ODataDemo.DemoService")
+public interface Categories
+    extends
+    org.apache.olingo.ext.proxy.api.EntitySet<Category, CategoryCollection>,
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<Categories>,
+    AbstractEntitySet<Category, java.lang.Integer, CategoryCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/DemoService.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/DemoService.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/DemoService.java
new file mode 100644
index 0000000..689a15e
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/DemoService.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.io.InputStream;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+import java.io.Serializable;
+
+import org.apache.olingo.ext.proxy.api.ComplexCollection;
+import org.apache.olingo.ext.proxy.api.ComplexType;
+import org.apache.olingo.ext.proxy.api.EdmStreamValue;
+import org.apache.olingo.ext.proxy.api.EntityCollection;
+import org.apache.olingo.ext.proxy.api.EntityType;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.PersistenceManager;
+import org.apache.olingo.ext.proxy.api.PrimitiveCollection;
+
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
+@org.apache.olingo.ext.proxy.api.annotations.EntityContainer(name = "DemoService",
+    namespace = "ODataDemo")
+public interface DemoService extends PersistenceManager {
+
+  Products getProducts();
+
+  Advertisements getAdvertisements();
+
+  Persons getPersons();
+
+  Categories getCategories();
+
+  PersonDetails getPersonDetails();
+
+  Suppliers getSuppliers();
+
+  ProductDetails getProductDetails();
+
+  Operations operations();
+
+  public interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.Operation(name = "IncreaseSalaries",
+        type = OperationType.ACTION)
+    org.apache.olingo.ext.proxy.api.Invoker<Void> increaseSalaries(
+        @org.apache.olingo.ext.proxy.api.annotations.Parameter(name = "percentage", type = "Edm.Int32",
+            nullable = false) java.lang.Integer percentage
+        );
+
+  }
+
+  <NE extends EntityType<?>> NE newEntityInstance(Class<NE> ref);
+
+  <T extends EntityType<?>, NEC extends EntityCollection<T, ?, ?>> NEC newEntityCollection(Class<NEC> ref);
+
+  <NE extends ComplexType<?>> NE newComplexInstance(Class<NE> ref);
+
+  <T extends ComplexType<?>, NEC extends ComplexCollection<T, ?, ?>> NEC newComplexCollection(Class<NEC> ref);
+
+  <T extends Serializable, NEC extends PrimitiveCollection<T>> NEC newPrimitiveCollection(Class<T> ref);
+
+  EdmStreamValue newEdmStreamValue(String contentType, InputStream stream);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/PersonDetails.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/PersonDetails.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/PersonDetails.java
new file mode 100644
index 0000000..7bbe19a
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/PersonDetails.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.PersonDetail;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.PersonDetailCollection;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "PersonDetails", container = "ODataDemo.DemoService")
+public interface PersonDetails
+    extends
+    org.apache.olingo.ext.proxy.api.EntitySet<PersonDetail, PersonDetailCollection>,
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<PersonDetails>,
+    AbstractEntitySet<PersonDetail, java.lang.Integer, PersonDetailCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Persons.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Persons.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Persons.java
new file mode 100644
index 0000000..0168282
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Persons.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Person;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.PersonCollection;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Persons", container = "ODataDemo.DemoService")
+public interface Persons
+    extends
+    org.apache.olingo.ext.proxy.api.EntitySet<Person, PersonCollection>,
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<Persons>,
+    AbstractEntitySet<Person, java.lang.Integer, PersonCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/ProductDetails.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/ProductDetails.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/ProductDetails.java
new file mode 100644
index 0000000..af9d06f
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/ProductDetails.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.ProductDetail;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.ProductDetailCollection;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "ProductDetails", container = "ODataDemo.DemoService")
+public interface ProductDetails
+    extends
+    org.apache.olingo.ext.proxy.api.EntitySet<ProductDetail, ProductDetailCollection>,
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<ProductDetails>,
+    AbstractEntitySet<ProductDetail, java.lang.Integer, ProductDetailCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Products.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Products.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Products.java
new file mode 100644
index 0000000..ace5f49
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Products.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Product;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.ProductCollection;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Products", container = "ODataDemo.DemoService")
+public interface Products
+    extends
+    org.apache.olingo.ext.proxy.api.EntitySet<Product, ProductCollection>,
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<Products>,
+    AbstractEntitySet<Product, java.lang.Integer, ProductCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Suppliers.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Suppliers.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Suppliers.java
new file mode 100644
index 0000000..3293d39
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/Suppliers.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.Supplier;
+import org.apache.olingo.fit.proxy.demo.odatademo.types.SupplierCollection;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Suppliers", container = "ODataDemo.DemoService")
+public interface Suppliers
+    extends
+    org.apache.olingo.ext.proxy.api.EntitySet<Supplier, SupplierCollection>,
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<Suppliers>,
+    AbstractEntitySet<Supplier, java.lang.Integer, SupplierCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/package-info.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/package-info.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/package-info.java
new file mode 100644
index 0000000..c9f8094
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo;
+

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Address.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Address.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Address.java
new file mode 100644
index 0000000..1310bf3
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Address.java
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.Annotatable;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
+@org.apache.olingo.ext.proxy.api.annotations.ComplexType(name = "Address",
+    isOpenType = false,
+    isAbstract = false)
+public interface Address
+    extends org.apache.olingo.ext.proxy.api.ComplexType<Address>,
+    org.apache.olingo.ext.proxy.api.StructuredQuery<Address> {
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Street",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getStreet();
+
+  void setStreet(java.lang.String _street);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "City",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getCity();
+
+  void setCity(java.lang.String _city);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "State",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getState();
+
+  void setState(java.lang.String _state);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ZipCode",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getZipCode();
+
+  void setZipCode(java.lang.String _zipCode);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Country",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getCountry();
+
+  void setCountry(java.lang.String _country);
+
+  Annotations annotations();
+
+  interface Annotations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Street",
+        type = "Edm.String")
+    Annotatable getStreetAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "City",
+        type = "Edm.String")
+    Annotatable getCityAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "State",
+        type = "Edm.String")
+    Annotatable getStateAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ZipCode",
+        type = "Edm.String")
+    Annotatable getZipCodeAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Country",
+        type = "Edm.String")
+    Annotatable getCountryAnnotations();
+
+  }
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressCollection.java
new file mode 100644
index 0000000..85bf84e
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressCollection.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface AddressCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<AddressCollection>,
+org.apache.olingo.ext.proxy.api.ComplexCollection<Address, AddressCollection, AddressCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressCollectionComposableInvoker.java
new file mode 100644
index 0000000..34e8a67
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressCollectionComposableInvoker.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface AddressCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<AddressCollection, AddressCollection.Operations> {
+
+  @Override
+  AddressCollectionComposableInvoker select(String... select);
+
+  @Override
+  AddressCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressComposableInvoker.java
new file mode 100644
index 0000000..bc22a11
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AddressComposableInvoker.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface AddressComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<Address, Address.Operations>
+{
+
+  @Override
+  AddressComposableInvoker select(String... select);
+
+  @Override
+  AddressComposableInvoker expand(String... expand);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Street",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getStreet();
+
+  void setStreet(java.lang.String _street);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "City",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getCity();
+
+  void setCity(java.lang.String _city);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "State",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getState();
+
+  void setState(java.lang.String _state);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ZipCode",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getZipCode();
+
+  void setZipCode(java.lang.String _zipCode);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Country",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getCountry();
+
+  void setCountry(java.lang.String _country);
+
+}