You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/04/07 14:20:11 UTC

[3/3] olingo-odata4 git commit: [OLINGO-603] Delete core dependecies in Tec Scenario

[OLINGO-603] Delete core dependecies in Tec Scenario


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/05935a0c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/05935a0c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/05935a0c

Branch: refs/heads/master
Commit: 05935a0c3d9141995cdf6547aefc0517360ee94d
Parents: d4c2b89
Author: Christian Amend <ch...@apache.org>
Authored: Tue Apr 7 13:47:26 2015 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Apr 7 14:15:17 2015 +0200

----------------------------------------------------------------------
 .../org/apache/olingo/fit/AbstractServices.java |  34 ++--
 .../java/org/apache/olingo/fit/V4Services.java  |  99 +++++----
 .../core/serialization/ODataBinderImpl.java     |  30 ++-
 .../apache/olingo/client/core/v4/JSONTest.java  |   2 +-
 .../commons/api/data/AbstractODataObject.java   |  68 +++++++
 .../olingo/commons/api/data/Annotatable.java    |  29 ++-
 .../olingo/commons/api/data/Annotation.java     |  12 +-
 .../olingo/commons/api/data/ComplexValue.java   |   9 +-
 .../olingo/commons/api/data/DeletedEntity.java  |  22 +-
 .../apache/olingo/commons/api/data/Delta.java   |  19 +-
 .../olingo/commons/api/data/DeltaLink.java      |  30 ++-
 .../apache/olingo/commons/api/data/Entity.java  | 138 ++++++++-----
 .../olingo/commons/api/data/EntitySet.java      |  59 +++---
 .../apache/olingo/commons/api/data/Link.java    | 129 ++++++++----
 .../apache/olingo/commons/api/data/Linked.java  |  43 +++-
 .../olingo/commons/api/data/Parameter.java      |  41 +++-
 .../olingo/commons/api/data/Property.java       |  29 ++-
 .../olingo/commons/api/data/Valuable.java       | 142 ++++++++++---
 .../core/data/AbstractAnnotatedObject.java      |  54 -----
 .../commons/core/data/AbstractODataObject.java  |  57 ------
 .../commons/core/data/AbstractValuable.java     | 166 ---------------
 .../commons/core/data/AnnotationImpl.java       |  36 ----
 .../commons/core/data/ComplexValueImpl.java     |  88 --------
 .../commons/core/data/DeletedEntityImpl.java    |  48 -----
 .../olingo/commons/core/data/DeltaImpl.java     |  48 -----
 .../olingo/commons/core/data/DeltaLinkImpl.java |  61 ------
 .../olingo/commons/core/data/EntityImpl.java    | 204 -------------------
 .../olingo/commons/core/data/EntitySetImpl.java |  73 -------
 .../olingo/commons/core/data/LinkImpl.java      | 129 ------------
 .../olingo/commons/core/data/ParameterImpl.java |  47 -----
 .../olingo/commons/core/data/PropertyImpl.java  |  54 -----
 .../core/serialization/AtomDeserializer.java    |  44 ++--
 .../core/serialization/AtomSerializer.java      |  21 +-
 .../serialization/JsonDeltaDeserializer.java    |  13 +-
 .../core/serialization/JsonDeserializer.java    |  26 +--
 .../serialization/JsonEntityDeserializer.java   |  13 +-
 .../JsonEntitySetDeserializer.java              |   6 +-
 .../serialization/JsonPropertyDeserializer.java |   6 +-
 .../core/serialization/JsonSerializer.java      |  24 +--
 .../org/apache/olingo/server/api/OData.java     |  14 ++
 .../apache/olingo/server/core/ODataImpl.java    |   8 +
 .../json/ODataJsonDeserializer.java             |  66 +++---
 .../json/ODataJsonSerializerTest.java           |  10 +-
 lib/server-tecsvc/pom.xml                       |   1 +
 .../apache/olingo/server/tecsvc/Encoder.java    | 132 ++++++++++++
 .../olingo/server/tecsvc/data/DataCreator.java  | 131 ++++++------
 .../olingo/server/tecsvc/data/DataProvider.java |  23 +--
 .../olingo/server/tecsvc/data/FunctionData.java |  24 +--
 .../processor/TechnicalEntityProcessor.java     |   8 +-
 .../TechnicalPrimitiveComplexProcessor.java     |  14 +-
 .../tecsvc/processor/TechnicalProcessor.java    |   5 +
 .../ExpandSystemQueryOptionHandler.java         |  11 +-
 .../expression/operand/TypedOperand.java        |  58 +++---
 .../expression/operand/UntypedOperand.java      |  70 +++----
 .../expression/operand/VisitorOperand.java      |  57 ++++--
 .../expression/operation/BinaryOperator.java    | 124 ++++++-----
 .../operation/MethodCallOperator.java           |  91 ++++++---
 .../expression/operation/UnaryOperator.java     |  20 +-
 .../expression/primitive/EdmNull.java           | 112 +++++++++-
 .../queryoptions/options/FilterHandler.java     |  32 ++-
 .../options/ServerSidePagingHandler.java        |   2 +-
 .../json/ODataJsonSerializerTest.java           |   3 +-
 .../olingo/server/sample/data/DataProvider.java |  25 +--
 63 files changed, 1397 insertions(+), 1797 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
index de8c10e..a57f11b 100644
--- a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
+++ b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
@@ -81,10 +81,6 @@ import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 import org.apache.olingo.commons.api.format.ContentType;
 import org.apache.olingo.commons.api.serialization.ODataDeserializer;
 import org.apache.olingo.commons.api.serialization.ODataSerializer;
-import org.apache.olingo.commons.core.data.EntityImpl;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
-import org.apache.olingo.commons.core.data.LinkImpl;
-import org.apache.olingo.commons.core.data.PropertyImpl;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
 import org.apache.olingo.commons.core.serialization.AtomSerializer;
 import org.apache.olingo.commons.core.serialization.JsonDeserializer;
@@ -231,14 +227,14 @@ public abstract class AbstractServices {
   @GET
   @Path("/StoredPIs(1000)")
   public Response getStoredPI(@Context final UriInfo uriInfo) {
-    final Entity entity = new EntityImpl();
+    final Entity entity = new Entity();
     entity.setType("Microsoft.Test.OData.Services.ODataWCFService.StoredPI");
-    final Property id = new PropertyImpl();
+    final Property id = new Property();
     id.setType("Edm.Int32");
     id.setName("StoredPIID");
     id.setValue(ValueType.PRIMITIVE, 1000);
     entity.getProperties().add(id);
-    final Link edit = new LinkImpl();
+    final Link edit = new Link();
     edit.setHref(uriInfo.getRequestUri().toASCIIString());
     edit.setRel("edit");
     edit.setTitle("StoredPI");
@@ -622,7 +618,7 @@ public abstract class AbstractServices {
       final Entity entry;
       final String entityKey;
       if (xml.isMediaContent(entitySetName)) {
-        entry = new EntityImpl();
+        entry = new Entity();
         entry.setMediaContentType(ContentType.APPLICATION_OCTET_STREAM.toContentTypeString());
         entry.setType(entitySet.getType());
 
@@ -632,7 +628,7 @@ public abstract class AbstractServices {
 
         final Pair<String, EdmPrimitiveTypeKind> id = Commons.getMediaContent().get(entitySetName);
         if (id != null) {
-          final Property prop = new PropertyImpl();
+          final Property prop = new Property();
           prop.setName(id.getKey());
           prop.setType(id.getValue().toString());
           prop.setValue(ValueType.PRIMITIVE,
@@ -644,7 +640,7 @@ public abstract class AbstractServices {
           entry.getProperties().add(prop);
         }
 
-        final Link editLink = new LinkImpl();
+        final Link editLink = new Link();
         editLink.setHref(Commons.getEntityURI(entitySetName, entityKey));
         editLink.setRel("edit");
         editLink.setTitle(entitySetName);
@@ -691,7 +687,7 @@ public abstract class AbstractServices {
       if ((this instanceof V4KeyAsSegment)) {
         location = uriInfo.getRequestUri().toASCIIString() + "/" + entityKey;
 
-        final Link editLink = new LinkImpl();
+        final Link editLink = new Link();
         editLink.setRel("edit");
         editLink.setTitle(entitySetName);
         editLink.setHref(location);
@@ -1207,7 +1203,7 @@ public abstract class AbstractServices {
       final Entity entry = container.getPayload();
 
       if ((this instanceof V4KeyAsSegment)) {
-        final Link editLink = new LinkImpl();
+        final Link editLink = new Link();
         editLink.setRel("edit");
         editLink.setTitle(entitySetName);
         editLink.setHref(Constants.get(ConstantKey.DEFAULT_SERVICE_URL) + entitySetName + "/" + entityId);
@@ -1248,7 +1244,7 @@ public abstract class AbstractServices {
         for (Link link : entry.getNavigationLinks()) {
           if (links.contains(link.getTitle())) {
             // expand link
-            final Link rep = new LinkImpl();
+            final Link rep = new Link();
             rep.setHref(link.getHref());
             rep.setRel(link.getRel());
             rep.setTitle(link.getTitle());
@@ -1904,7 +1900,7 @@ public abstract class AbstractServices {
 
     for (Property property : entity.getProperties()) {
       if (navProperties.containsKey(property.getName())) {
-        Link alink = new LinkImpl();
+        Link alink = new Link();
         alink.setTitle(property.getName());
         alink.getAnnotations().addAll(property.getAnnotations());
 
@@ -1915,9 +1911,9 @@ public abstract class AbstractServices {
         alink.setRel(Constants.get(ConstantKey.ATOM_LINK_REL) + property.getName());
 
         if (property.isCollection()) {
-          EntitySet inline = new EntitySetImpl();
+          EntitySet inline = new EntitySet();
           for (Object value : property.asCollection()) {
-            Entity inlineEntity = new EntityImpl();
+            Entity inlineEntity = new Entity();
             inlineEntity.setType(navProperties.get(property.getName()).getType());
             for (Property prop : ((ComplexValue) value).getValue()) {
               inlineEntity.getProperties().add(prop);
@@ -1926,7 +1922,7 @@ public abstract class AbstractServices {
           }
           alink.setInlineEntitySet(inline);
         } else if (property.isComplex()) {
-          Entity inline = new EntityImpl();
+          Entity inline = new Entity();
           inline.setType(navProperties.get(property.getName()).getType());
           for (Property prop : property.asComplex().getValue()) {
             inline.getProperties().add(prop);
@@ -1946,7 +1942,7 @@ public abstract class AbstractServices {
     final EntityType entityType = metadata.getEntityOrComplexType(entitySet.getType());
     for (Map.Entry<String, org.apache.olingo.fit.metadata.Property> property : entityType.getPropertyMap().entrySet()) {
       if (entry.getProperty(property.getKey()) == null && property.getValue().isNullable()) {
-        final PropertyImpl prop = new PropertyImpl();
+        final Property prop = new Property();
         prop.setName(property.getKey());
         prop.setValue(ValueType.PRIMITIVE, null);
         entry.getProperties().add(prop);
@@ -1962,7 +1958,7 @@ public abstract class AbstractServices {
       }
 
       if (!found) {
-        final LinkImpl link = new LinkImpl();
+        final Link link = new Link();
         link.setTitle(property.getKey());
         link.setType(property.getValue().isEntitySet()
             ? Constants.get(ConstantKey.ATOM_LINK_FEED)

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/fit/src/main/java/org/apache/olingo/fit/V4Services.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/V4Services.java b/fit/src/main/java/org/apache/olingo/fit/V4Services.java
index fe9465e..6c1038d 100644
--- a/fit/src/main/java/org/apache/olingo/fit/V4Services.java
+++ b/fit/src/main/java/org/apache/olingo/fit/V4Services.java
@@ -18,6 +18,43 @@
  */
 package org.apache.olingo.fit;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.regex.Pattern;
+
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMultipart;
+import javax.ws.rs.BadRequestException;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.NotFoundException;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
+
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -34,10 +71,6 @@ import org.apache.olingo.commons.api.data.ResWrap;
 import org.apache.olingo.commons.api.data.ValueType;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 import org.apache.olingo.commons.api.format.ContentType;
-import org.apache.olingo.commons.core.data.EntityImpl;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
-import org.apache.olingo.commons.core.data.LinkImpl;
-import org.apache.olingo.commons.core.data.PropertyImpl;
 import org.apache.olingo.commons.core.edm.provider.EdmTypeInfo;
 import org.apache.olingo.fit.metadata.Metadata;
 import org.apache.olingo.fit.methods.PATCH;
@@ -52,44 +85,6 @@ import org.apache.olingo.fit.utils.FSManager;
 import org.apache.olingo.fit.utils.LinkInfo;
 import org.springframework.stereotype.Service;
 
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMultipart;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriInfo;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStreamWriter;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.regex.Pattern;
-
-import javax.ws.rs.BadRequestException;
-
 @Service
 @Path("/V40/Static.svc")
 @InInterceptors(classes = { XHTTPMethodInterceptor.class, ResolvingReferencesInterceptor.class })
@@ -504,7 +499,7 @@ public class V4Services extends AbstractServices {
         acceptType = Accept.parse(accept);
       }
 
-      final Property property = new PropertyImpl();
+      final Property property = new Property();
       property.setType("Edm.Int32");
       property.setValue(ValueType.PRIMITIVE, 2);
       final ResWrap<Property> container = new ResWrap<Property>(
@@ -565,27 +560,27 @@ public class V4Services extends AbstractServices {
         acceptType = Accept.parse(accept);
       }
 
-      final EntityImpl entry = new EntityImpl();
+      final Entity entry = new Entity();
       entry.setType("Microsoft.Test.OData.Services.ODataWCFService.ProductDetail");
-      final Property productId = new PropertyImpl();
+      final Property productId = new Property();
       productId.setName("ProductID");
       productId.setType("Edm.Int32");
       productId.setValue(ValueType.PRIMITIVE, Integer.valueOf(entityId));
       entry.getProperties().add(productId);
-      final Property productDetailId = new PropertyImpl();
+      final Property productDetailId = new Property();
       productDetailId.setName("ProductDetailID");
       productDetailId.setType("Edm.Int32");
       productDetailId.setValue(ValueType.PRIMITIVE, 2);
       entry.getProperties().add(productDetailId);
 
-      final Link link = new LinkImpl();
+      final Link link = new Link();
       link.setRel("edit");
       link.setHref(URI.create(
           Constants.get(ConstantKey.DEFAULT_SERVICE_URL)
               + "ProductDetails(ProductID=6,ProductDetailID=1)").toASCIIString());
       entry.setEditLink(link);
 
-      final EntitySetImpl feed = new EntitySetImpl();
+      final EntitySet feed = new EntitySet();
       feed.getEntities().add(entry);
 
       final ResWrap<EntitySet> container = new ResWrap<EntitySet>(
@@ -736,7 +731,7 @@ public class V4Services extends AbstractServices {
         acceptType = Accept.parse(accept);
       }
 
-      final Property property = new PropertyImpl();
+      final Property property = new Property();
       property.setType("Edm.Double");
       property.setValue(ValueType.PRIMITIVE, 41.79);
 
@@ -1144,7 +1139,7 @@ public class V4Services extends AbstractServices {
         acceptType = Accept.parse(accept);
       }
 
-      final PropertyImpl property = new PropertyImpl();
+      final Property property = new Property();
       property.setType("Microsoft.Test.OData.Services.ODataWCFService.Color");
       property.setValue(ValueType.ENUM, "Red");
       final ResWrap<Property> container = new ResWrap<Property>(
@@ -1236,7 +1231,7 @@ public class V4Services extends AbstractServices {
         acceptType = Accept.parse(accept);
       }
 
-      final PropertyImpl property = new PropertyImpl();
+      final Property property = new Property();
       property.setType("Collection(String)");
       final List<String> value = Arrays.asList("Cheetos", "Mushrooms", "Apple", "Car", "Computer");
       property.setValue(ValueType.COLLECTION_PRIMITIVE, value);
@@ -1268,7 +1263,7 @@ public class V4Services extends AbstractServices {
         acceptType = Accept.parse(accept);
       }
 
-      final PropertyImpl property = new PropertyImpl();
+      final Property property = new Property();
       property.setType("Collection(Edm.String)");
       property.setValue(ValueType.COLLECTION_PRIMITIVE,
           Arrays.asList("first@olingo.apache.org", "second@olingo.apache.org"));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
index 2ae47f1..54823e0 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
@@ -87,12 +87,6 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.edm.geo.Geospatial;
 import org.apache.olingo.commons.api.format.ODataFormat;
 import org.apache.olingo.commons.api.serialization.ODataSerializerException;
-import org.apache.olingo.commons.core.data.AnnotationImpl;
-import org.apache.olingo.commons.core.data.ComplexValueImpl;
-import org.apache.olingo.commons.core.data.EntityImpl;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
-import org.apache.olingo.commons.core.data.LinkImpl;
-import org.apache.olingo.commons.core.data.PropertyImpl;
 import org.apache.olingo.commons.core.domain.ODataAnnotationImpl;
 import org.apache.olingo.commons.core.domain.ODataDeletedEntityImpl;
 import org.apache.olingo.commons.core.domain.ODataDeltaLinkImpl;
@@ -187,7 +181,7 @@ public class ODataBinderImpl implements ODataBinder {
 
   private void annotations(final ODataAnnotatable odataAnnotatable, final Annotatable annotatable) {
     for (ODataAnnotation odataAnnotation : odataAnnotatable.getAnnotations()) {
-      final Annotation annotation = new AnnotationImpl();
+      final Annotation annotation = new Annotation();
 
       annotation.setTerm(odataAnnotation.getTerm());
       annotation.setType(odataAnnotation.getValue().getTypeName());
@@ -199,7 +193,7 @@ public class ODataBinderImpl implements ODataBinder {
 
   @Override
   public EntitySet getEntitySet(final ODataEntitySet odataEntitySet) {
-    final EntitySet entitySet = new EntitySetImpl();
+    final EntitySet entitySet = new EntitySet();
 
     entitySet.setCount(odataEntitySet.getCount());
 
@@ -248,7 +242,7 @@ public class ODataBinderImpl implements ODataBinder {
 
   @Override
   public Entity getEntity(final ODataEntity odataEntity) {
-    final Entity entity = new EntityImpl();
+    final Entity entity = new Entity();
 
     entity.setType(odataEntity.getTypeName() == null ? null : odataEntity.getTypeName().toString());
 
@@ -257,7 +251,7 @@ public class ODataBinderImpl implements ODataBinder {
     // -------------------------------------------------------------
     final URI odataEditLink = odataEntity.getEditLink();
     if (odataEditLink != null) {
-      final LinkImpl editLink = new LinkImpl();
+      final Link editLink = new Link();
       editLink.setTitle(entity.getType());
       editLink.setHref(odataEditLink.toASCIIString());
       editLink.setRel(Constants.EDIT_LINK_REL);
@@ -265,7 +259,7 @@ public class ODataBinderImpl implements ODataBinder {
     }
 
     if (odataEntity.isReadOnly()) {
-      final LinkImpl selfLink = new LinkImpl();
+      final Link selfLink = new Link();
       selfLink.setTitle(entity.getType());
       selfLink.setHref(odataEntity.getLink().toASCIIString());
       selfLink.setRel(Constants.SELF_LINK_REL);
@@ -301,7 +295,7 @@ public class ODataBinderImpl implements ODataBinder {
 
   @Override
   public Link getLink(final ODataLink link) {
-    final Link linkResource = new LinkImpl();
+    final Link linkResource = new Link();
     linkResource.setRel(link.getRel());
     linkResource.setTitle(link.getName());
     linkResource.setHref(link.getLink() == null ? null : link.getLink().toASCIIString());
@@ -328,7 +322,7 @@ public class ODataBinderImpl implements ODataBinder {
   @Override
   public Property getProperty(final ODataProperty property) {
 
-    final Property propertyResource = new PropertyImpl();
+    final Property propertyResource = new Property();
     propertyResource.setName(property.getName());
     updateValuable(propertyResource, property);
     annotations(property, propertyResource);
@@ -350,7 +344,7 @@ public class ODataBinderImpl implements ODataBinder {
       for (final ODataProperty propertyValue : value.asComplex()) {
         complexProperties.add(getProperty(propertyValue));
       }
-      final ComplexValue lcValueResource = new ComplexValueImpl();
+      final ComplexValue lcValueResource = new ComplexValue();
       lcValueResource.getValue().addAll(complexProperties);
       annotations(value.asComplex(), lcValueResource);
       links(value.asComplex(), lcValueResource);
@@ -573,16 +567,16 @@ public class ODataBinderImpl implements ODataBinder {
 
   private ODataLink createLinkFromNavigationProperty(final Property property, final String propertyTypeName) {
     if (property.isCollection()) {
-      EntitySet inlineEntitySet = new EntitySetImpl();
+      EntitySet inlineEntitySet = new EntitySet();
       for (final Object inlined : property.asCollection()) {
-        Entity inlineEntity = new EntityImpl();
+        Entity inlineEntity = new Entity();
         inlineEntity.setType(propertyTypeName);
         inlineEntity.getProperties().addAll(((ComplexValue) inlined).getValue());
         inlineEntitySet.getEntities().add(inlineEntity);
       }
       return createODataInlineEntitySet(inlineEntitySet, null, property.getName(), null);
     } else {
-      Entity inlineEntity = new EntityImpl();
+      Entity inlineEntity = new Entity();
       inlineEntity.setType(propertyTypeName);
       inlineEntity.getProperties().addAll(property.asComplex().getValue());
       return createODataInlineEntity(inlineEntity, null, property.getName(), null);
@@ -751,7 +745,7 @@ public class ODataBinderImpl implements ODataBinder {
       value = client.getObjectFactory().newCollectionValue(type == null ? null : "Collection(" + type.toString() + ")");
 
       for (Object _value : valuable.asCollection()) {
-        final Property fake = new PropertyImpl();
+        final Property fake = new Property();
         fake.setValue(valuable.getValueType().getBaseType(), _value);
         value.asCollection().add(getODataValue(type, fake, contextURL, metadataETag));
       }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java
index 19f39e6..0f6cb19 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java
@@ -146,7 +146,7 @@ public class JSONTest extends AbstractTest {
     final StringWriter writer = new StringWriter();
     getClient().getSerializer(format).write(writer, getClient().getDeserializer(format).toEntity(
         getClass().getResourceAsStream(filename + "." + getSuffix(format))).getPayload());
-
+    
     assertSimilar(filename + "." + getSuffix(format), writer.toString());
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/AbstractODataObject.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/AbstractODataObject.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/AbstractODataObject.java
new file mode 100644
index 0000000..2904bfd
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/AbstractODataObject.java
@@ -0,0 +1,68 @@
+/*
+ * 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.commons.api.data;
+
+import java.net.URI;
+import java.text.ParseException;
+
+public abstract class AbstractODataObject extends Annotatable {
+
+  private URI baseURI;
+  private URI id;
+  private String title;
+
+  /**
+   * Gets base URI.
+   * 
+   * @return base URI.
+   */
+  public URI getBaseURI() {
+    return baseURI;
+  }
+
+  public void setBaseURI(final String baseURI) {
+    this.baseURI = baseURI == null ? null : URI.create(baseURI);
+  }
+
+
+  /**
+   * Gest ID.
+   * 
+   * @return ID.
+   */
+  public URI getId() {
+    return id;
+  }
+
+  public void setId(final URI id) {
+    this.id = id;
+  }
+
+  public String getTitle() {
+    return title;
+  }
+
+  public void setCommonProperty(final String key, final String value) throws ParseException {
+    if ("id".equals(key)) {
+      id = URI.create(value);
+    } else if ("title".equals(key)) {
+      title = value;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotatable.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotatable.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotatable.java
index b2e3583..b43002f 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotatable.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotatable.java
@@ -18,12 +18,37 @@
  */
 package org.apache.olingo.commons.api.data;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
 /**
  * An element with instance annotations.
  */
-public interface Annotatable {
+public abstract class Annotatable {
+
+  private final List<Annotation> annotations = new ArrayList<Annotation>();
+
+  public List<Annotation> getAnnotations() {
+    return annotations;
+  }
+
+  @Override
+  public boolean equals(final Object obj) {
+    return EqualsBuilder.reflectionEquals(this, obj);
+  }
+
+  @Override
+  public int hashCode() {
+    return HashCodeBuilder.reflectionHashCode(this);
+  }
 
-  List<Annotation> getAnnotations();
+  @Override
+  public String toString() {
+    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotation.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotation.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotation.java
index f4e9d90..1b1741a 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotation.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Annotation.java
@@ -21,9 +21,15 @@ package org.apache.olingo.commons.api.data;
 /**
  * Represents an instance annotation.
  */
-public interface Annotation extends Valuable {
+public class Annotation extends Valuable {
 
-  String getTerm();
+  private String term;
 
-  void setTerm(String term);
+  public String getTerm() {
+    return term;
+  }
+
+  public void setTerm(final String term) {
+    this.term = term;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java
index ea5b528..d2611b3 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java
@@ -18,9 +18,14 @@
  */
 package org.apache.olingo.commons.api.data;
 
+import java.util.ArrayList;
 import java.util.List;
 
-public interface ComplexValue extends Linked, Annotatable {
+public class ComplexValue extends Linked {
 
-  List<Property> getValue();
+  private final List<Property> value = new ArrayList<Property>();
+
+  public List<Property> getValue() {
+    return value;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeletedEntity.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeletedEntity.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeletedEntity.java
index 77993c0..e51abfc 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeletedEntity.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeletedEntity.java
@@ -20,17 +20,31 @@ package org.apache.olingo.commons.api.data;
 
 import java.net.URI;
 
-public interface DeletedEntity {
+public class DeletedEntity {
 
-  enum Reason {
+  public enum Reason {
 
     deleted,
     changed
 
   }
 
-  URI getId();
+  private URI id;
+  private Reason reason;
 
-  Reason getReason();
+  public URI getId() {
+    return id;
+  }
+
+  public void setId(final URI id) {
+    this.id = id;
+  }
 
+  public Reason getReason() {
+    return reason;
+  }
+
+  public void setReason(final Reason reason) {
+    this.reason = reason;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Delta.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Delta.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Delta.java
index 4309325..5fe36f7 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Delta.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Delta.java
@@ -18,14 +18,25 @@
  */
 package org.apache.olingo.commons.api.data;
 
+import java.util.ArrayList;
 import java.util.List;
 
-public interface Delta extends EntitySet {
+public class Delta extends EntitySet {
 
-  List<DeletedEntity> getDeletedEntities();
+  private final List<DeletedEntity> deletedEntities = new ArrayList<DeletedEntity>();
+  private final List<DeltaLink> addedLinks = new ArrayList<DeltaLink>();
+  private final List<DeltaLink> deletedLinks = new ArrayList<DeltaLink>();
 
-  List<DeltaLink> getAddedLinks();
+  public List<DeletedEntity> getDeletedEntities() {
+    return deletedEntities;
+  }
 
-  List<DeltaLink> getDeletedLinks();
+  public List<DeltaLink> getAddedLinks() {
+    return addedLinks;
+  }
+
+  public List<DeltaLink> getDeletedLinks() {
+    return deletedLinks;
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeltaLink.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeltaLink.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeltaLink.java
index 6c09fc8..335863e 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeltaLink.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/DeltaLink.java
@@ -20,17 +20,33 @@ package org.apache.olingo.commons.api.data;
 
 import java.net.URI;
 
-public interface DeltaLink extends Annotatable {
+public class DeltaLink extends Annotatable {
 
-  URI getSource();
+  private URI source;
+  private String relationship;
+  private URI target;
 
-  void setSource(URI source);
+  public URI getSource() {
+    return source;
+  }
 
-  String getRelationship();
+  public void setSource(final URI source) {
+    this.source = source;
+  }
 
-  void setRelationship(String relationship);
+  public String getRelationship() {
+    return relationship;
+  }
 
-  URI getTarget();
+  public void setRelationship(final String relationship) {
+    this.relationship = relationship;
+  }
 
-  void setTarget(URI target);
+  public URI getTarget() {
+    return target;
+  }
+
+  public void setTarget(final URI target) {
+    this.target = target;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java
index 4029cc3..acd3022 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java
@@ -21,93 +21,110 @@ package org.apache.olingo.commons.api.data;
 import org.apache.olingo.commons.api.domain.ODataOperation;
 
 import java.net.URI;
+import java.util.ArrayList;
 import java.util.List;
 
-public interface Entity extends Linked, Annotatable {
+public class Entity extends Linked {
+
+  private String eTag;
+  private String type;
+
+  private Link readLink;
+  private Link editLink;
+
+  private final List<Link> mediaEditLinks = new ArrayList<Link>();
+  private final List<ODataOperation> operations = new ArrayList<ODataOperation>();
+
+  private final List<Property> properties = new ArrayList<Property>();
+
+  private URI mediaContentSource;
+  private String mediaContentType;
+  private String mediaETag;
 
   /**
    * Gets ETag.
    * 
    * @return ETag.
    */
-  String getETag();
+  public String getETag() {
+    return eTag;
+  }
 
-  /**
-   * Gets base URI.
-   * 
-   * @return base URI.
-   */
-  URI getBaseURI();
+  public void setETag(final String eTag) {
+    this.eTag = eTag;
+  }
 
   /**
    * Gets entity type.
    * 
    * @return entity type.
    */
-  String getType();
+  public String getType() {
+    return type;
+  }
 
   /**
    * Sets entity type.
    * 
    * @param type entity type.
    */
-  void setType(String type);
-
-  /**
-   * Gets entity ID.
-   * 
-   * @return entity ID.
-   */
-  URI getId();
-
-  /**
-   * Sets entity ID.
-   * 
-   * @param id entity ID.
-   */
-  void setId(URI id);
+  public void setType(final String type) {
+    this.type = type;
+  }
 
   /**
    * Gets entity self link.
    * 
    * @return self link.
    */
-  Link getSelfLink();
+  public Link getSelfLink() {
+    return readLink;
+  }
 
   /**
    * Sets entity self link.
    * 
    * @param selfLink self link.
    */
-  void setSelfLink(Link selfLink);
+  public void setSelfLink(final Link selfLink) {
+    this.readLink = selfLink;
+  }
 
   /**
    * Gets entity edit link.
    * 
    * @return edit link.
    */
-  Link getEditLink();
+  public Link getEditLink() {
+    return editLink;
+  }
 
   /**
    * Sets entity edit link.
    * 
    * @param editLink edit link.
    */
-  void setEditLink(Link editLink);
+  public void setEditLink(final Link editLink) {
+    this.editLink = editLink;
+  }
 
   /**
    * Gets media entity links.
    * 
    * @return links.
    */
-  List<Link> getMediaEditLinks();
+  public List<Link> getMediaEditLinks() {
+    return mediaEditLinks;
+  }
 
   /**
    * Gets operations.
    * 
    * @return operations.
    */
-  List<ODataOperation> getOperations();
+  public List<ODataOperation> getOperations() {
+    return operations;
+  }
 
   /**
    * Add property to this Entity.
@@ -115,14 +132,19 @@ public interface Entity extends Linked, Annotatable {
    * @param property property which is added
    * @return this Entity for fluid/flow adding
    */
-  Entity addProperty(Property property);
+  public Entity addProperty(final Property property) {
+    properties.add(property);
+    return this;
+  }
 
   /**
    * Gets properties.
    * 
    * @return properties.
    */
-  List<Property> getProperties();
+  public List<Property> getProperties() {
+    return properties;
+  }
 
   /**
    * Gets property with given name.
@@ -130,54 +152,78 @@ public interface Entity extends Linked, Annotatable {
    * @param name property name
    * @return property with given name if found, null otherwise
    */
-  Property getProperty(String name);
+  public Property getProperty(final String name) {
+    Property result = null;
+
+    for (Property property : properties) {
+      if (name.equals(property.getName())) {
+        result = property;
+      }
+    }
+
+    return result;
+  }
 
   /**
    * Gets media content type.
    * 
    * @return media content type.
    */
-  String getMediaContentType();
+  public String getMediaContentType() {
+    return mediaContentType;
+  }
 
   /**
-   * Gets media content resource.
+   * Set media content type.
    * 
-   * @return media content resource.
+   * @param mediaContentType media content type.
    */
-  URI getMediaContentSource();
+  public void setMediaContentType(final String mediaContentType) {
+    this.mediaContentType = mediaContentType;
+  }
 
   /**
-   * Set media content source.
+   * Gets media content resource.
    * 
-   * @param mediaContentSource media content source.
+   * @return media content resource.
    */
-  void setMediaContentSource(URI mediaContentSource);
+  public URI getMediaContentSource() {
+    return mediaContentSource;
+  }
 
   /**
-   * Set media content type.
+   * Set media content source.
    * 
-   * @param mediaContentType media content type.
+   * @param mediaContentSource media content source.
    */
-  void setMediaContentType(String mediaContentType);
+  public void setMediaContentSource(final URI mediaContentSource) {
+    this.mediaContentSource = mediaContentSource;
+  }
 
   /**
    * ETag of the binary stream represented by this media entity or named stream property.
    * 
    * @return media ETag value
    */
-  String getMediaETag();
+  public String getMediaETag() {
+    return mediaETag;
+  }
 
   /**
    * Set media ETag.
    * 
    * @param eTag media ETag value
    */
-  void setMediaETag(String eTag);
+  public void setMediaETag(final String eTag) {
+    mediaETag = eTag;
+  }
 
   /**
    * Checks if the current entity is a media entity.
    * 
    * @return 'TRUE' if is a media entity; 'FALSE' otherwise.
    */
-  boolean isMediaEntity();
+  public boolean isMediaEntity() {
+    return mediaContentSource != null;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntitySet.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntitySet.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntitySet.java
index ad7e4fb..8f2cfb7 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntitySet.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntitySet.java
@@ -19,70 +19,79 @@
 package org.apache.olingo.commons.api.data;
 
 import java.net.URI;
+import java.util.ArrayList;
 import java.util.List;
 
-public interface EntitySet extends Annotatable {
+public class EntitySet extends AbstractODataObject {
 
-  /**
-   * Gets base URI.
-   * 
-   * @return base URI.
-   */
-  URI getBaseURI();
+  private Integer count;
+
+  private final List<Entity> entities = new ArrayList<Entity>();
+
+  private URI next;
+
+  private URI deltaLink;
 
   /**
    * Sets number of entries.
    * 
    * @param count number of entries
    */
-  void setCount(Integer count);
+  public void setCount(final Integer count) {
+    this.count = count;
+  }
 
   /**
    * Gets number of entries - if it was required.
    * 
    * @return number of entries into the entity set.
    */
-  Integer getCount();
-
-  /**
-   * Gest ID.
-   * 
-   * @return ID.
-   */
-  URI getId();
+  public Integer getCount() {
+    return count;
+  }
 
   /**
    * Gets entities.
    * 
    * @return entries.
    */
-  List<Entity> getEntities();
+  public List<Entity> getEntities() {
+    return entities;
+  }
 
   /**
-   * Gets next link if exists.
+   * Sets next link.
    * 
-   * @return next link if exists; null otherwise.
+   * @param next next link.
    */
-  URI getNext();
+  public void setNext(final URI next) {
+    this.next = next;
+  }
 
   /**
-   * Sets next link.
+   * Gets next link if exists.
    * 
-   * @param next next link.
+   * @return next link if exists; null otherwise.
    */
-  void setNext(URI next);
+  public URI getNext() {
+    return next;
+  }
 
   /**
    * Gets delta link if exists.
    * 
    * @return delta link if exists; null otherwise.
    */
-  URI getDeltaLink();
+  public URI getDeltaLink() {
+    return deltaLink;
+  }
 
   /**
    * Sets delta link.
    * 
    * @param deltaLink delta link.
    */
-  void setDeltaLink(URI deltaLink);
+  public void setDeltaLink(final URI deltaLink) {
+    this.deltaLink = deltaLink;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Link.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Link.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Link.java
index 88742f5..dff1069 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Link.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Link.java
@@ -18,130 +18,177 @@
  */
 package org.apache.olingo.commons.api.data;
 
+import java.util.ArrayList;
 import java.util.List;
 
-public interface Link extends Annotatable {
+public class Link extends Annotatable {
+
+  private String title;
+  private String rel;
+  private String href;
+  private String type;
+  private String mediaETag;
+  private Entity entity;
+  private EntitySet entitySet;
+  private String bindingLink;
+  private List<String> bindingLinks = new ArrayList<String>();
 
   /**
-   * Gets rel info.
+   * Gets title.
    * 
-   * @return rel info.
+   * @return title.
    */
-  String getRel();
+  public String getTitle() {
+    return title;
+  }
 
   /**
-   * Sets rel info.
+   * Sets title.
    * 
-   * @param rel rel info.
+   * @param title title.
    */
-  void setRel(String rel);
+  public void setTitle(final String title) {
+    this.title = title;
+  }
 
   /**
-   * Gets type.
+   * Gets rel info.
    * 
-   * @return type.
+   * @return rel info.
    */
-  String getType();
+  public String getRel() {
+    return rel;
+  }
 
   /**
-   * Sets type.
+   * Sets rel info.
    * 
-   * @param type type.
+   * @param rel rel info.
    */
-  void setType(String type);
+  public void setRel(final String rel) {
+    this.rel = rel;
+  }
 
   /**
-   * Gets title.
+   * Gets href.
    * 
-   * @return title.
+   * @return href.
    */
-  String getTitle();
+  public String getHref() {
+    return href;
+  }
 
   /**
-   * Sets title.
+   * Sets href.
    * 
-   * @param title title.
+   * @param href href.
    */
-  void setTitle(String title);
+  public void setHref(final String href) {
+    this.href = href;
+  }
 
   /**
-   * Gets href.
+   * Gets type.
    * 
-   * @return href.
+   * @return type.
    */
-  String getHref();
+  public String getType() {
+    return type;
+  }
 
   /**
-   * Sets href.
+   * Sets type.
    * 
-   * @param href href.
+   * @param type type.
    */
-  void setHref(String href);
+  public void setType(final String type) {
+    this.type = type;
+  }
 
   /**
    * Gets Media ETag.
    * 
    * @return media ETag
    */
-  String getMediaETag();
+  public String getMediaETag() {
+    return mediaETag;
+  }
 
   /**
    * Sets Media ETag.
    * 
-   * @param etag media ETag
+   * @param mediaETag media ETag
    */
-  void setMediaETag(String etag);
+  public void setMediaETag(final String mediaETag) {
+    this.mediaETag = mediaETag;
+  }
 
   /**
    * Gets in-line entity.
    * 
    * @return in-line entity.
    */
-  Entity getInlineEntity();
+  public Entity getInlineEntity() {
+    return entity;
+  }
 
   /**
    * Sets in-line entity.
    * 
    * @param entity entity.
    */
-  void setInlineEntity(Entity entity);
+  public void setInlineEntity(final Entity entity) {
+    this.entity = entity;
+  }
+
 
   /**
    * Gets in-line entity set.
    * 
    * @return in-line entity set.
    */
-  EntitySet getInlineEntitySet();
+  public EntitySet getInlineEntitySet() {
+    return entitySet;
+  }
 
   /**
    * Sets in-line entity set.
    * 
    * @param entitySet entity set.
    */
-  void setInlineEntitySet(EntitySet entitySet);
+  public void setInlineEntitySet(final EntitySet entitySet) {
+    this.entitySet = entitySet;
+  }
 
   /**
    * If this is a "toOne" relationship this method delivers the binding link or <tt>null</tt> if not set.
    * @return String the binding link.
    */
-  String getBindingLink();
+  public String getBindingLink() {
+    return bindingLink;
+  }
 
   /**
-   * Sets the binding link.
-   * @param bindingLink
+   * If this is a "toMany" relationship this method delivers the binding links or <tt>emptyList</tt> if not set.
+   * @return a list of binding links.
    */
-  void setBindingLink(String bindingLink);
+  public List<String> getBindingLinks() {
+    return bindingLinks;
+  }
 
   /**
-   * If this is a "toMany" relationship this method delivers the binding links or <tt>emptyList</tt> if not set.
-   * @return a list of binding links.
+   * Sets the binding link.
+   * @param bindingLink
    */
-  List<String> getBindingLinks();
+  public void setBindingLink(String bindingLink) {
+    this.bindingLink = bindingLink;
+  }
 
   /**
    * Sets the binding links. List MUST NOT be <tt>null</tt>.
    * @param bindingLinks
    */
-  void setBindingLinks(List<String> bindingLinks);
-
+  public void setBindingLinks(List<String> bindingLinks) {
+    this.bindingLinks = bindingLinks;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Linked.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Linked.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Linked.java
index 1c28507..c136d55 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Linked.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Linked.java
@@ -18,9 +18,26 @@
  */
 package org.apache.olingo.commons.api.data;
 
+import java.util.ArrayList;
 import java.util.List;
 
-public interface Linked {
+public abstract class Linked extends AbstractODataObject {
+
+  private final List<Link> associationLinks = new ArrayList<Link>();
+  private final List<Link> navigationLinks = new ArrayList<Link>();
+  private final List<Link> bindingLinks = new ArrayList<Link>();
+
+  protected Link getOneByTitle(final String name, final List<Link> links) {
+    Link result = null;
+
+    for (Link link : links) {
+      if (name.equals(link.getTitle())) {
+        result = link;
+      }
+    }
+
+    return result;
+  }
 
   /**
    * Gets association link with given name, if available, otherwise <tt>null</tt>.
@@ -28,14 +45,18 @@ public interface Linked {
    * @param name candidate link name
    * @return association link with given name, if available, otherwise <tt>null</tt>
    */
-  Link getAssociationLink(String name);
+  public Link getAssociationLink(final String name) {
+    return getOneByTitle(name, associationLinks);
+  }
 
   /**
    * Gets association links.
    * 
    * @return association links.
    */
-  List<Link> getAssociationLinks();
+  public List<Link> getAssociationLinks() {
+    return associationLinks;
+  }
 
   /**
    * Gets navigation link with given name, if available, otherwise <tt>null</tt>.
@@ -43,26 +64,34 @@ public interface Linked {
    * @param name candidate link name
    * @return navigation link with given name, if available, otherwise <tt>null</tt>
    */
-  Link getNavigationLink(String name);
+  public Link getNavigationLink(final String name) {
+    return getOneByTitle(name, navigationLinks);
+  }
 
   /**
    * Gets navigation links.
    * 
    * @return links.
    */
-  List<Link> getNavigationLinks();
+  public List<Link> getNavigationLinks() {
+    return navigationLinks;
+  }
 
   /**
    * Gets binding link with given name, if available, otherwise <tt>null</tt>.
    * @param name candidate link name
    * @return binding link with given name, if available, otherwise <tt>null</tt>
    */
-  Link getNavigationBinding(String name);
+  public Link getNavigationBinding(String name) {
+    return getOneByTitle(name, bindingLinks);
+  }
 
   /**
    * Gets binding links.
    * 
    * @return links.
    */
-  List<Link> getNavigationBindings();
+  public List<Link> getNavigationBindings() {
+    return bindingLinks;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Parameter.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Parameter.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Parameter.java
index 87058ec..a5443c7 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Parameter.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Parameter.java
@@ -18,15 +18,46 @@
  */
 package org.apache.olingo.commons.api.data;
 
-public interface Parameter extends Valuable {
+public class Parameter extends Valuable {
+
+  String name;
 
   /**
    * @return name of the parameter
    */
-  String getName();
+  public String getName() {
+    return name;
+  }
 
-  boolean isEntity();
-  
-  Entity asEntity();
+  /**
+   * @param name of the parameter
+   */
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  /**
+   * Check if Valuable contains a ENTITY or COLLECTION_ENTITY ValueType
+   *
+   * @return true if ValueType is a ENTITY or COLLECTION_ENTITY, otherwise false
+   */
+  public boolean isEntity() {
+    if (isCollection()) {
+      return getValueType().getBaseType() == ValueType.ENTITY;
+    }
+    return getValueType() == ValueType.ENTITY;
+  }
+
+  /**
+   * Get the value in its entity representation or null if it is not based on an entity ValueType
+   *
+   * @return entity representation or null if it is not based on an entity ValueType
+   */
+  public Entity asEntity() {
+    if (isCollection()) {
+      return null;
+    }
+    return isEntity() ? (Entity) getValue() : null;
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Property.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Property.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Property.java
index 28163dd..ef0adbd 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Property.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Property.java
@@ -18,9 +18,32 @@
  */
 package org.apache.olingo.commons.api.data;
 
-public interface Property extends Valuable, Annotatable {
+public class Property extends Valuable {
 
-  String getName();
+  private String name;
 
-  void setName(String name);
+  public Property() {}
+
+  public Property(final String type, final String name) {
+    this.name = name;
+    super.setType(type);
+  }
+
+  public Property(String type, String name, ValueType valueType, Object value) {
+    this(type, name);
+    setValue(valueType, value);
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean isNull() {
+    return getValue() == null || "Edm.Null".equals(getType());
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Valuable.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Valuable.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Valuable.java
index 78989b3..f982aab 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Valuable.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Valuable.java
@@ -18,96 +18,178 @@
  */
 package org.apache.olingo.commons.api.data;
 
-import org.apache.olingo.commons.api.edm.geo.Geospatial;
-
 import java.util.List;
 
-public interface Valuable {
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+
+public abstract class Valuable extends Annotatable {
 
-  String getType();
+  private ValueType valueType = null;
+  private Object value = null;
+  private String type;
 
-  void setType(String type);
+  public boolean isNull() {
+    return value == null;
+  }
 
-  boolean isNull();
+  public String getType() {
+    return type;
+  }
 
+  public void setType(final String type) {
+    this.type = type;
+  }
+  
   /**
    * Check if Valuable contains a PRIMITIVE or COLLECTION_PRIMITIVE ValueType
    *
    * @return true if ValueType is a PRIMITIVE or COLLECTION_PRIMITIVE, otherwise false
    */
-  boolean isPrimitive();
+  public boolean isPrimitive() {
+    if(isCollection()) {
+      return valueType.getBaseType() == ValueType.PRIMITIVE;
+    }
+    return valueType == ValueType.PRIMITIVE;
+  }
 
   /**
    * Check if Valuable contains a GEOSPATIAL or COLLECTION_GEOSPATIAL ValueType
    *
    * @return true if ValueType is a GEOSPATIAL or COLLECTION_GEOSPATIAL, otherwise false
    */
-  boolean isGeospatial();
+  public boolean isGeospatial() {
+    if(isCollection()) {
+      return valueType.getBaseType() == ValueType.GEOSPATIAL;
+    }
+    return valueType == ValueType.GEOSPATIAL;
+  }
+
 
   /**
    * Check if Valuable contains a ENUM or COLLECTION_ENUM ValueType
    *
    * @return true if ValueType is a ENUM or COLLECTION_ENUM, otherwise false
    */
-  boolean isEnum();
+  public boolean isEnum() {
+    if(isCollection()) {
+      return valueType.getBaseType() == ValueType.ENUM;
+    }
+    return valueType == ValueType.ENUM;
+  }
 
   /**
    * Check if Valuable contains a COMPLEX or COLLECTION_COMPLEX ValueType
    *
    * @return true if ValueType is a COMPLEX or COLLECTION_COMPLEX, otherwise false
    */
-  boolean isComplex();
+  public boolean isComplex() {
+    if(isCollection()) {
+      return valueType.getBaseType() == ValueType.COMPLEX;
+    }
+    return valueType == ValueType.COMPLEX;
+  }
 
   /**
    * Check if Valuable contains a COLLECTION_* ValueType
    *
    * @return true if ValueType is a COLLECTION_*, otherwise false
    */
-  boolean isCollection();
-
-  /**
-   * Get the value
-   *
-   * @return the value
-   */
-  Object getValue();
+  public boolean isCollection() {
+    return valueType != null && valueType != valueType.getBaseType();
+  }
 
   /**
    * Get the value in its primitive representation or null if it is not based on a primitive ValueType
    *
    * @return primitive representation or null if it is not based on a primitive ValueType
    */
-  Object asPrimitive();
+  public Object asPrimitive() {
+    if(isCollection()) {
+      return null;
+    }
+    return isPrimitive() ? value : null;
+  }
 
   /**
-   * Get the value in its enum representation or null if it is not based on a enum ValueType
+   * Get the value in its geospatial representation or null if it is not based on a geospatial ValueType
    *
-   * @return enum representation or null if it is not based on a enum ValueType
+   * @return geospatial representation or null if it is not based on a geospatial ValueType
    */
-  Object asEnum();
+  public Geospatial asGeospatial() {
+    if(isCollection()) {
+      return null;
+    }
+    return isGeospatial() ? (Geospatial) value : null;
+  }
 
   /**
-   * Get the value in its geospatial representation or null if it is not based on a geospatial ValueType
+   * Get the value in its enum representation or null if it is not based on a enum ValueType
    *
-   * @return geospatial representation or null if it is not based on a geospatial ValueType
+   * @return enum representation or null if it is not based on a enum ValueType
    */
-  Geospatial asGeospatial();
+  public Object asEnum() {
+    if(isCollection()) {
+      return null;
+    }
+    return isEnum() ? value : null;
+  }
 
   /**
    * Get the value in its complex representation or null if it is not based on a complex ValueType
    *
    * @return primitive complex or null if it is not based on a complex ValueType
    */
-  ComplexValue asComplex();
+  public ComplexValue asComplex() {
+    if(isCollection()) {
+      return null;
+    }
+    return isComplex() ? (ComplexValue) value : null;
+  }
 
   /**
    * Get the value as collection or null if it is not a collection ValueType
    *
    * @return collection or null if it is not a collection ValueType
    */
-  List<?> asCollection();
+  public List<?> asCollection() {
+    return isCollection() ? (List<?>) value : null;
+  }
 
-  void setValue(ValueType valuetype, Object value);
-
-  ValueType getValueType();
+  /**
+   * Get the value
+   *
+   * @return the value
+   */
+  public Object getValue() {
+    return value;
+  }
+
+  public void setValue(final ValueType valueType, final Object value) {
+    this.valueType = valueType;
+    this.value = value;
+  }
+
+  public ValueType getValueType() {
+    return valueType;
+  }
+
+
+  @Override
+  public boolean equals(final Object obj) {
+    return EqualsBuilder.reflectionEquals(this, obj);
+  }
+
+  @Override
+  public int hashCode() {
+    return HashCodeBuilder.reflectionHashCode(this);
+  }
+
+  @Override
+  public String toString() {
+    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractAnnotatedObject.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractAnnotatedObject.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractAnnotatedObject.java
deleted file mode 100644
index d8cdf05..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractAnnotatedObject.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.olingo.commons.api.data.Annotatable;
-import org.apache.olingo.commons.api.data.Annotation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public abstract class AbstractAnnotatedObject implements Annotatable {
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    return EqualsBuilder.reflectionEquals(this, obj);
-  }
-
-  @Override
-  public int hashCode() {
-    return HashCodeBuilder.reflectionHashCode(this);
-  }
-
-  @Override
-  public String toString() {
-    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataObject.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataObject.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataObject.java
deleted file mode 100644
index 6a3c46f..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataObject.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import java.net.URI;
-import java.text.ParseException;
-
-public abstract class AbstractODataObject extends AbstractAnnotatedObject {
-
-  private URI baseURI;
-  private URI id;
-  private String title;
-
-  public URI getBaseURI() {
-    return baseURI;
-  }
-
-  public void setBaseURI(final String baseURI) {
-    this.baseURI = baseURI == null ? null : URI.create(baseURI);
-  }
-
-  public URI getId() {
-    return id;
-  }
-
-  public void setId(final URI id) {
-    this.id = id;
-  }
-
-  public String getTitle() {
-    return title;
-  }
-
-  public void setCommonProperty(final String key, final String value) throws ParseException {
-    if ("id".equals(key)) {
-      id = URI.create(value);
-    } else if ("title".equals(key)) {
-      title = value;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractValuable.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractValuable.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractValuable.java
deleted file mode 100644
index 3a06511..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractValuable.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.olingo.commons.api.data.Annotatable;
-import org.apache.olingo.commons.api.data.Annotation;
-import org.apache.olingo.commons.api.data.ComplexValue;
-import org.apache.olingo.commons.api.data.Valuable;
-import org.apache.olingo.commons.api.data.ValueType;
-import org.apache.olingo.commons.api.edm.geo.Geospatial;
-
-public abstract class AbstractValuable implements Valuable, Annotatable {
-
-  private ValueType valueType = null;
-  private Object value = null;
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-  private String type;
-
-  @Override
-  public boolean isNull() {
-    return value == null;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-  
-  @Override
-  public boolean isPrimitive() {
-    if(isCollection()) {
-      return valueType.getBaseType() == ValueType.PRIMITIVE;
-    }
-    return valueType == ValueType.PRIMITIVE;
-  }
-
-  @Override
-  public boolean isGeospatial() {
-    if(isCollection()) {
-      return valueType.getBaseType() == ValueType.GEOSPATIAL;
-    }
-    return valueType == ValueType.GEOSPATIAL;
-  }
-
-  @Override
-  public boolean isEnum() {
-    if(isCollection()) {
-      return valueType.getBaseType() == ValueType.ENUM;
-    }
-    return valueType == ValueType.ENUM;
-  }
-
-  @Override
-  public boolean isComplex() {
-    if(isCollection()) {
-      return valueType.getBaseType() == ValueType.COMPLEX;
-    }
-    return valueType == ValueType.COMPLEX;
-  }
-
-  @Override
-  public boolean isCollection() {
-    return valueType != null && valueType != valueType.getBaseType();
-  }
-
-  @Override
-  public Object asPrimitive() {
-    if(isCollection()) {
-      return null;
-    }
-    return isPrimitive() ? value : null;
-  }
-
-  @Override
-  public Geospatial asGeospatial() {
-    if(isCollection()) {
-      return null;
-    }
-    return isGeospatial() ? (Geospatial) value : null;
-  }
-
-  @Override
-  public Object asEnum() {
-    if(isCollection()) {
-      return null;
-    }
-    return isEnum() ? value : null;
-  }
-
-  @Override
-  public ComplexValue asComplex() {
-    if(isCollection()) {
-      return null;
-    }
-    return isComplex() ? (ComplexValue) value : null;
-  }
-
-  @Override
-  public List<?> asCollection() {
-    return isCollection() ? (List<?>) value : null;
-  }
-
-  @Override
-  public Object getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(final ValueType valueType, final Object value) {
-    this.valueType = valueType;
-    this.value = value;
-  }
-
-  @Override
-  public ValueType getValueType() {
-    return valueType;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    return EqualsBuilder.reflectionEquals(this, obj);
-  }
-
-  @Override
-  public int hashCode() {
-    return HashCodeBuilder.reflectionHashCode(this);
-  }
-
-  @Override
-  public String toString() {
-    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AnnotationImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AnnotationImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AnnotationImpl.java
deleted file mode 100644
index 4e9953b..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AnnotationImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import org.apache.olingo.commons.api.data.Annotation;
-
-public class AnnotationImpl extends AbstractValuable implements Annotation {
-
-  private String term;
-
-  @Override
-  public String getTerm() {
-    return term;
-  }
-
-  @Override
-  public void setTerm(final String term) {
-    this.term = term;
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/ComplexValueImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/ComplexValueImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/ComplexValueImpl.java
deleted file mode 100644
index c50f51a..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/ComplexValueImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import org.apache.olingo.commons.api.data.Annotation;
-import org.apache.olingo.commons.api.data.Link;
-import org.apache.olingo.commons.api.data.ComplexValue;
-import org.apache.olingo.commons.api.data.Property;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ComplexValueImpl implements ComplexValue {
-
-  private final List<Property> value = new ArrayList<Property>();
-  private final List<Link> associationLinks = new ArrayList<Link>();
-  private final List<Link> navigationLinks = new ArrayList<Link>();
-  private final List<Link> bindingLinks = new ArrayList<Link>();
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public List<Property> getValue() {
-    return value;
-  }
-
-  private Link getOneByTitle(final String name, final List<Link> links) {
-    Link result = null;
-
-    for (Link link : links) {
-      if (name.equals(link.getTitle())) {
-        result = link;
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  public Link getAssociationLink(final String name) {
-    return getOneByTitle(name, associationLinks);
-  }
-
-  @Override
-  public List<Link> getAssociationLinks() {
-    return associationLinks;
-  }
-
-  @Override
-  public Link getNavigationLink(final String name) {
-    return getOneByTitle(name, navigationLinks);
-  }
-
-  @Override
-  public List<Link> getNavigationLinks() {
-    return navigationLinks;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
-  @Override
-  public Link getNavigationBinding(String name) {
-    return getOneByTitle(name, bindingLinks);
-  }
-
-  @Override
-  public List<Link> getNavigationBindings() {
-    return bindingLinks;
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java
deleted file mode 100644
index 657e652..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import org.apache.olingo.commons.api.data.DeletedEntity;
-
-import java.net.URI;
-
-public class DeletedEntityImpl extends AbstractAnnotatedObject implements DeletedEntity {
-
-  private URI id;
-  private Reason reason;
-
-  @Override
-  public URI getId() {
-    return id;
-  }
-
-  public void setId(final URI id) {
-    this.id = id;
-  }
-
-  @Override
-  public Reason getReason() {
-    return reason;
-  }
-
-  public void setReason(final Reason reason) {
-    this.reason = reason;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaImpl.java
deleted file mode 100644
index 3165bd4..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaImpl.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import org.apache.olingo.commons.api.data.DeletedEntity;
-import org.apache.olingo.commons.api.data.Delta;
-import org.apache.olingo.commons.api.data.DeltaLink;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DeltaImpl extends EntitySetImpl implements Delta {
-
-  private final List<DeletedEntity> deletedEntities = new ArrayList<DeletedEntity>();
-  private final List<DeltaLink> addedLinks = new ArrayList<DeltaLink>();
-  private final List<DeltaLink> deletedLinks = new ArrayList<DeltaLink>();
-
-  @Override
-  public List<DeletedEntity> getDeletedEntities() {
-    return deletedEntities;
-  }
-
-  @Override
-  public List<DeltaLink> getAddedLinks() {
-    return addedLinks;
-  }
-
-  @Override
-  public List<DeltaLink> getDeletedLinks() {
-    return deletedLinks;
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java
deleted file mode 100644
index 91a1569..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import org.apache.olingo.commons.api.data.DeltaLink;
-
-import java.net.URI;
-
-public class DeltaLinkImpl extends AbstractAnnotatedObject implements DeltaLink {
-
-  private URI source;
-  private String relationship;
-  private URI target;
-
-  @Override
-  public URI getSource() {
-    return source;
-  }
-
-  @Override
-  public void setSource(final URI source) {
-    this.source = source;
-  }
-
-  @Override
-  public String getRelationship() {
-    return relationship;
-  }
-
-  @Override
-  public void setRelationship(final String relationship) {
-    this.relationship = relationship;
-  }
-
-  @Override
-  public URI getTarget() {
-    return target;
-  }
-
-  @Override
-  public void setTarget(final URI target) {
-    this.target = target;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/05935a0c/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java
deleted file mode 100755
index 38dd748..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * 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.commons.core.data;
-
-import org.apache.olingo.commons.api.data.Entity;
-import org.apache.olingo.commons.api.data.Link;
-import org.apache.olingo.commons.api.data.Property;
-import org.apache.olingo.commons.api.domain.ODataOperation;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Class implementing an OData entity.
- */
-public class EntityImpl extends AbstractODataObject implements Entity {
-
-  private String eTag;
-
-  private String type;
-
-  private Link readLink;
-  private Link editLink;
-
-  private final List<Link> associationLinks = new ArrayList<Link>();
-  private final List<Link> navigationLinks = new ArrayList<Link>();
-  private final List<Link> mediaEditLinks = new ArrayList<Link>();
-  private final List<Link> bindingLinks = new ArrayList<Link>();
-
-  private final List<ODataOperation> operations = new ArrayList<ODataOperation>();
-
-  private final List<Property> properties = new ArrayList<Property>();
-
-  private URI mediaContentSource;
-  private String mediaContentType;
-  private String mediaETag;
-
-  @Override
-  public String getETag() {
-    return eTag;
-  }
-
-  public void setETag(final String eTag) {
-    this.eTag = eTag;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public Link getSelfLink() {
-    return readLink;
-  }
-
-  @Override
-  public void setSelfLink(final Link readLink) {
-    this.readLink = readLink;
-  }
-
-  @Override
-  public Link getEditLink() {
-    return editLink;
-  }
-
-  @Override
-  public void setEditLink(final Link editLink) {
-    this.editLink = editLink;
-  }
-
-  private Link getOneByTitle(final String name, final List<Link> links) {
-    Link result = null;
-
-    for (Link link : links) {
-      if (name.equals(link.getTitle())) {
-        result = link;
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  public Link getAssociationLink(final String name) {
-    return getOneByTitle(name, associationLinks);
-  }
-
-  @Override
-  public List<Link> getAssociationLinks() {
-    return associationLinks;
-  }
-
-  @Override
-  public Link getNavigationLink(final String name) {
-    return getOneByTitle(name, navigationLinks);
-  }
-
-  @Override
-  public List<Link> getNavigationLinks() {
-    return navigationLinks;
-  }
-
-  @Override
-  public List<Link> getMediaEditLinks() {
-    return mediaEditLinks;
-  }
-  
-  @Override
-  public Link getNavigationBinding(String name) {
-    return getOneByTitle(name, bindingLinks);
-  }
-
-  @Override
-  public List<Link> getNavigationBindings() {
-    return bindingLinks;
-  }
-
-  @Override
-  public List<ODataOperation> getOperations() {
-    return operations;
-  }
-
-  @Override
-  public Entity addProperty(final Property property) {
-    properties.add(property);
-    return this;
-  }
-
-  @Override
-  public List<Property> getProperties() {
-    return properties;
-  }
-
-  @Override
-  public Property getProperty(final String name) {
-    Property result = null;
-
-    for (Property property : properties) {
-      if (name.equals(property.getName())) {
-        result = property;
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  public String getMediaContentType() {
-    return mediaContentType;
-  }
-
-  @Override
-  public void setMediaContentType(final String mediaContentType) {
-    this.mediaContentType = mediaContentType;
-  }
-
-  @Override
-  public URI getMediaContentSource() {
-    return mediaContentSource;
-  }
-
-  @Override
-  public void setMediaContentSource(final URI mediaContentSource) {
-    this.mediaContentSource = mediaContentSource;
-  }
-
-  @Override
-  public String getMediaETag() {
-    return mediaETag;
-  }
-
-  @Override
-  public void setMediaETag(final String eTag) {
-    mediaETag = eTag;
-  }
-
-  @Override
-  public boolean isMediaEntity() {
-    return mediaContentSource != null;
-  }
-}