Repository: olingo-odata4
Updated Branches:
  refs/heads/master a6d20f627 -> 20351253e


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/20351253/lib/commons-core/src/main/java/org/apache/olingo/commons/core/serialization/JsonSerializer.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/serialization/JsonSerializer.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/serialization/JsonSerializer.java
deleted file mode 100755
index 92ce269..0000000
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/serialization/JsonSerializer.java
+++ /dev/null
@@ -1,376 +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.serialization;
-
-import java.io.IOException;
-import java.io.Writer;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.commons.api.Constants;
-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.Entity;
-import org.apache.olingo.commons.api.data.EntityCollection;
-import org.apache.olingo.commons.api.data.Link;
-import org.apache.olingo.commons.api.data.Linked;
-import org.apache.olingo.commons.api.data.Property;
-import org.apache.olingo.commons.api.data.ResWrap;
-import org.apache.olingo.commons.api.data.Valuable;
-import org.apache.olingo.commons.api.data.ValueType;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.geo.Geospatial;
-import org.apache.olingo.commons.api.format.ODataFormat;
-import org.apache.olingo.commons.api.serialization.ODataSerializer;
-import org.apache.olingo.commons.api.serialization.ODataSerializerException;
-import org.apache.olingo.commons.core.edm.EdmTypeInfo;
-import 
org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
-
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonGenerator;
-
-public class JsonSerializer implements ODataSerializer {
-
-  private static final EdmPrimitiveTypeKind[] NUMBER_TYPES = {
-    EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte,
-    EdmPrimitiveTypeKind.Single, EdmPrimitiveTypeKind.Double,
-    EdmPrimitiveTypeKind.Int16, EdmPrimitiveTypeKind.Int32, 
EdmPrimitiveTypeKind.Int64,
-    EdmPrimitiveTypeKind.Decimal
-  };
-
-  private final JsonGeoValueSerializer geoSerializer = new 
JsonGeoValueSerializer();
-
-  protected boolean serverMode;
-
-  protected ODataFormat format;
-
-  public JsonSerializer(final boolean serverMode) {
-    this(serverMode, ODataFormat.JSON_FULL_METADATA);
-  }
-
-  public JsonSerializer(final boolean serverMode, final ODataFormat format) {
-    this.serverMode = serverMode;
-    this.format = format;
-  }
-
-  @Override
-  public <T> void write(final Writer writer, final T obj) throws 
ODataSerializerException {
-    try {
-      final JsonGenerator json = new JsonFactory().createGenerator(writer);
-      if (obj instanceof EntityCollection) {
-        new JsonEntitySetSerializer(serverMode).doSerialize((EntityCollection) 
obj, json);
-      } else if (obj instanceof Entity) {
-        new JsonEntitySerializer(serverMode, format).doSerialize((Entity) obj, 
json);
-      } else if (obj instanceof Property) {
-        new JsonPropertySerializer(serverMode).doSerialize((Property) obj, 
json);
-      } else if (obj instanceof Link) {
-        link((Link) obj, json);
-      }
-      json.flush();
-    } catch (final IOException e) {
-      throw new ODataSerializerException(e);
-    } catch (final EdmPrimitiveTypeException e) {
-      throw new ODataSerializerException(e);
-    }
-  }
-
-  private void reference(final ResWrap<URI> container, final JsonGenerator 
json) throws IOException {
-    json.writeStartObject();
-
-    json.writeStringField(Constants.JSON_CONTEXT, 
container.getContextURL().toASCIIString());
-    json.writeStringField(Constants.JSON_ID, 
container.getPayload().toASCIIString());
-
-    json.writeEndObject();
-  }
-
-  @SuppressWarnings("unchecked")
-  @Override
-  public <T> void write(final Writer writer, final ResWrap<T> container) 
throws ODataSerializerException {
-    final T obj = container == null ? null : container.getPayload();
-    try {
-      final JsonGenerator json = new JsonFactory().createGenerator(writer);
-      if (obj instanceof EntityCollection) {
-        new 
JsonEntitySetSerializer(serverMode).doContainerSerialize((ResWrap<EntityCollection>)
 container, json);
-      } else if (obj instanceof Entity) {
-        new 
JsonEntitySerializer(serverMode).doContainerSerialize((ResWrap<Entity>) 
container, json);
-      } else if (obj instanceof Property) {
-        new 
JsonPropertySerializer(serverMode).doContainerSerialize((ResWrap<Property>) 
container, json);
-      } else if (obj instanceof Link) {
-        link((Link) obj, json);
-      } else if (obj instanceof URI) {
-        reference((ResWrap<URI>) container, json);
-      }
-      json.flush();
-    } catch (final IOException e) {
-      throw new ODataSerializerException(e);
-    } catch (final EdmPrimitiveTypeException e) {
-      throw new ODataSerializerException(e);
-    }
-  }
-
-  protected void link(final Link link, final JsonGenerator jgen) throws 
IOException {
-    jgen.writeStartObject();
-    jgen.writeStringField(Constants.JSON_URL, link.getHref());
-    jgen.writeEndObject();
-  }
-
-  protected void links(final Linked linked, final JsonGenerator jgen)
-      throws IOException, EdmPrimitiveTypeException {
-
-    if (serverMode) {
-      serverLinks(linked, jgen);
-    } else {
-      clientLinks(linked, jgen);
-    }
-  }
-
-  protected void clientLinks(final Linked linked, final JsonGenerator jgen)
-      throws IOException, EdmPrimitiveTypeException {
-
-    final Map<String, List<String>> entitySetLinks = new HashMap<String, 
List<String>>();
-    for (Link link : linked.getNavigationLinks()) {
-      for (Annotation annotation : link.getAnnotations()) {
-        valuable(jgen, annotation, link.getTitle() + "@" + 
annotation.getTerm());
-      }
-
-      if (isEntitySetNavigation(link)) {
-        final List<String> uris;
-        if (entitySetLinks.containsKey(link.getTitle())) {
-          uris = entitySetLinks.get(link.getTitle());
-        } else {
-          uris = new ArrayList<String>();
-          entitySetLinks.put(link.getTitle(), uris);
-        }
-        if (StringUtils.isNotBlank(link.getHref())) {
-          uris.add(link.getHref());
-        }
-      } else {
-        if (StringUtils.isNotBlank(link.getHref())) {
-          jgen.writeStringField(link.getTitle() + 
Constants.JSON_BIND_LINK_SUFFIX, link.getHref());
-        }
-      }
-
-      if (link.getInlineEntity() != null) {
-        jgen.writeFieldName(link.getTitle());
-        new 
JsonEntitySerializer(serverMode).doSerialize(link.getInlineEntity(), jgen);
-      } else if (link.getInlineEntitySet() != null) {
-        jgen.writeArrayFieldStart(link.getTitle());
-        final JsonEntitySerializer entitySerializer = new 
JsonEntitySerializer(serverMode);
-        for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
-          entitySerializer.doSerialize(subEntry, jgen);
-        }
-        jgen.writeEndArray();
-      }
-    }
-    for (Map.Entry<String, List<String>> entitySetLink : 
entitySetLinks.entrySet()) {
-      if (!entitySetLink.getValue().isEmpty()) {
-        jgen.writeArrayFieldStart(entitySetLink.getKey() + 
Constants.JSON_BIND_LINK_SUFFIX);
-        for (String uri : entitySetLink.getValue()) {
-          jgen.writeString(uri);
-        }
-        jgen.writeEndArray();
-      }
-    }
-  }
-
-  private boolean isEntitySetNavigation(final Link link) {
-    return Constants.ENTITY_SET_NAVIGATION_LINK_TYPE.equals(link.getType());
-  }
-
-  protected void serverLinks(final Linked linked, final JsonGenerator jgen)
-      throws IOException, EdmPrimitiveTypeException {
-    if (linked instanceof Entity) {
-      for (Link link : ((Entity) linked).getMediaEditLinks()) {
-        if (StringUtils.isNotBlank(link.getHref())) {
-          jgen.writeStringField(
-              link.getTitle() + 
StringUtils.prependIfMissing(Constants.JSON_MEDIA_EDIT_LINK, "@"),
-              link.getHref());
-        }
-      }
-    }
-
-    for (Link link : linked.getAssociationLinks()) {
-      if (StringUtils.isNotBlank(link.getHref())) {
-        jgen.writeStringField(
-            link.getTitle() + Constants.JSON_ASSOCIATION_LINK,
-            link.getHref());
-      }
-    }
-
-    for (Link link : linked.getNavigationLinks()) {
-      for (Annotation annotation : link.getAnnotations()) {
-        valuable(jgen, annotation, link.getTitle() + "@" + 
annotation.getTerm());
-      }
-
-      if (StringUtils.isNotBlank(link.getHref())) {
-        jgen.writeStringField(
-            link.getTitle() + Constants.JSON_NAVIGATION_LINK,
-            link.getHref());
-      }
-
-      if (link.getInlineEntity() != null) {
-        jgen.writeFieldName(link.getTitle());
-        new 
JsonEntitySerializer(serverMode).doSerialize(link.getInlineEntity(), jgen);
-      } else if (link.getInlineEntitySet() != null) {
-        jgen.writeArrayFieldStart(link.getTitle());
-        JsonEntitySerializer entitySerializer = new 
JsonEntitySerializer(serverMode);
-        for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
-          entitySerializer.doSerialize(subEntry, jgen);
-        }
-        jgen.writeEndArray();
-      }
-    }
-  }
-
-  private void collection(final JsonGenerator jgen, final EdmTypeInfo typeInfo,
-      final ValueType valueType, final List<?> value)
-          throws IOException, EdmPrimitiveTypeException {
-
-    jgen.writeStartArray();
-
-    for (Object item : value) {
-      final EdmTypeInfo itemTypeInfo = typeInfo == null
-          ? null
-              : new 
EdmTypeInfo.Builder().setTypeExpression(typeInfo.getFullQualifiedName().toString()).build();
-      switch (valueType) {
-      case COLLECTION_PRIMITIVE:
-        primitiveValue(jgen, itemTypeInfo, item);
-        break;
-
-      case COLLECTION_GEOSPATIAL:
-        jgen.writeStartObject();
-        geoSerializer.serialize(jgen, (Geospatial) item);
-        jgen.writeEndObject();
-        break;
-
-      case COLLECTION_ENUM:
-        jgen.writeString(item.toString());
-        break;
-
-      case COLLECTION_COMPLEX:
-        final ComplexValue complexItem2 = (ComplexValue) item;
-        complexValue(jgen, itemTypeInfo, complexItem2.getValue(), 
complexItem2);
-        break;
-
-      default:
-      }
-    }
-
-    jgen.writeEndArray();
-  }
-
-  protected void primitiveValue(final JsonGenerator jgen, final EdmTypeInfo 
typeInfo, final Object value)
-      throws IOException, EdmPrimitiveTypeException {
-
-    final EdmPrimitiveTypeKind kind = typeInfo == null ? null : 
typeInfo.getPrimitiveTypeKind();
-    final boolean isNumber = kind == null ? value instanceof Number : 
ArrayUtils.contains(NUMBER_TYPES, kind);
-    final boolean isBoolean = kind == null ? value instanceof Boolean : kind 
== EdmPrimitiveTypeKind.Boolean;
-
-    if (value == null) {
-      jgen.writeNull();
-    } else if (isBoolean) {
-      jgen.writeBoolean((Boolean) value);
-    } else {
-      final String serialized = kind == null
-          ? value.toString()
-              // TODO: add facets
-              : EdmPrimitiveTypeFactory.getInstance(kind).
-              valueToString(value, null, null, Constants.DEFAULT_PRECISION, 
Constants.DEFAULT_SCALE, null);
-          if (isNumber) {
-            jgen.writeNumber(serialized);
-          } else {
-            jgen.writeString(serialized);
-          }
-    }
-  }
-
-  private void complexValue(final JsonGenerator jgen, final EdmTypeInfo 
typeInfo,
-      final List<Property> value, final Linked linked)
-          throws IOException, EdmPrimitiveTypeException {
-    jgen.writeStartObject();
-
-    if (typeInfo != null && format != ODataFormat.JSON_NO_METADATA) {
-      jgen.writeStringField(Constants.JSON_TYPE, typeInfo.external());
-    }
-
-    for (Property property : value) {
-      valuable(jgen, property, property.getName());
-    }
-    if (linked != null) {
-      links(linked, jgen);
-    }
-
-    jgen.writeEndObject();
-  }
-
-  private void value(final JsonGenerator jgen, final String type, final 
Valuable value)
-      throws IOException, EdmPrimitiveTypeException {
-    final EdmTypeInfo typeInfo = type == null ? null : new 
EdmTypeInfo.Builder().setTypeExpression(type).build();
-
-    if (value.isNull()) {
-      jgen.writeNull();
-    } else if (value.isCollection()) {
-      collection(jgen, typeInfo, value.getValueType(), value.asCollection());
-    } else if (value.isPrimitive()) {
-      primitiveValue(jgen, typeInfo, value.asPrimitive());
-    } else if (value.isEnum()) {
-      jgen.writeString(value.asEnum().toString());
-    } else if (value.isGeospatial()) {
-      jgen.writeStartObject();
-      geoSerializer.serialize(jgen, value.asGeospatial());
-      jgen.writeEndObject();
-    } else if (value.isComplex()) {
-      complexValue(jgen, typeInfo, value.asComplex().getValue(), 
value.asComplex());
-    }
-  }
-
-  protected void valuable(final JsonGenerator jgen, final Valuable valuable, 
final String name)
-      throws IOException, EdmPrimitiveTypeException {
-
-    if (!Constants.VALUE.equals(name) && !(valuable instanceof Annotation)
-        && !(valuable.isComplex() && !valuable.isCollection())) {
-
-      String type = valuable.getType();
-      if ((!valuable.isCollection() &&
-          StringUtils.isBlank(type) &&
-          valuable.isPrimitive()) || valuable.isNull()) {
-        type = EdmPrimitiveTypeKind.String.getFullQualifiedName().toString();
-      }
-      if (StringUtils.isNotBlank(type) && format != 
ODataFormat.JSON_NO_METADATA) {
-        jgen.writeFieldName(
-            name + StringUtils.prependIfMissing(Constants.JSON_TYPE, "@"));
-        jgen.writeString(new 
EdmTypeInfo.Builder().setTypeExpression(type).build().external());
-      }
-    }
-
-    for (Annotation annotation : ((Annotatable) valuable).getAnnotations()) {
-      valuable(jgen, annotation, name + "@" + annotation.getTerm());
-    }
-
-    jgen.writeFieldName(name);
-    value(jgen, valuable.getType(), valuable);
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/20351253/lib/commons-core/src/test/java/org/apache/olingo/commons/core/serialization/AtomDeserializerTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/serialization/AtomDeserializerTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/serialization/AtomDeserializerTest.java
deleted file mode 100644
index c1226b2..0000000
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/serialization/AtomDeserializerTest.java
+++ /dev/null
@@ -1,328 +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.serialization;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
-import org.apache.olingo.commons.api.data.Entity;
-import org.apache.olingo.commons.api.data.EntityCollection;
-import org.apache.olingo.commons.api.data.ResWrap;
-import org.junit.Test;
-
-public class AtomDeserializerTest {
-
-  @Test
-  public void emptyInlineEntityOlingo540() throws Exception {
-    final String content = "" +
-        "<entry xmlns=\"http://www.w3.org/2005/Atom\"; "
-        + "xmlns:data=\"http://docs.oasis-open.org/odata/ns/data\"; "
-        + "xmlns:metadata=\"http://docs.oasis-open.org/odata/ns/metadata\"; "
-        + "xmlns:georss=\"http://www.georss.org/georss\"; 
xmlns:gml=\"http://www.opengis.net/gml\"; "
-        + "xml:base=\"http://services.odata.org/V3/OData/OData.svc/\";>\r\n" +
-        "    
<id>http://services.odata.org/V3/OData/OData.svc/Products(3)</id>\r\n" +
-        "    <category term=\"ODataDemo.Product\" "
-        + "scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"; />\r\n" +
-        "    \r\n" +
-        "    <link rel=\"edit\" title=\"Product\" href=\"Products\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Categories\"; "
-        + "type=\"application/atom+xml;type=feed\" title=\"Categories\" 
href=\"Products(3)/Categories\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Supplier\"; "
-        + "type=\"application/atom+xml;type=entry\" title=\"Supplier\" 
href=\"Products(3)/Supplier\">\r\n" +
-        "    <metadata:inline>\r\n" +
-        "    </metadata:inline>\r\n" +
-        "    </link>\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/ProductDetail\"";
-        + " type=\"application/atom+xml;type=entry\" title=\"ProductDetail\" "
-        + "href=\"Products(3)/ProductDetail\" />\r\n" +
-        "    <title type=\"text\">Havina Cola</title>\r\n" +
-        "    <summary type=\"text\">The Original Key Lime Cola</summary>\r\n" +
-        "    <updated>2015-01-26T08:57:02Z</updated>\r\n" +
-        "    <author>\r\n" +
-        "        <name />\r\n" +
-        "    </author>\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Categories\"; "
-        + "type=\"application/xml\" title=\"Categories\" 
href=\"Products(3)/$links/Categories\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier\"; "
-        + "type=\"application/xml\" title=\"Supplier\" 
href=\"Products(3)/$links/Supplier\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail\"";
-        + " type=\"application/xml\" title=\"ProductDetail\" 
href=\"Products(3)/$links/ProductDetail\" />\r\n" +
-        "    <content type=\"application/xml\">\r\n" +
-        "        <metadata:properties>\r\n" +
-        "            <data:ID metadata:type=\"Edm.Int32\">3</data:ID>\r\n" +
-        "            <data:ReleaseDate 
metadata:type=\"Edm.DateTime\">2005-10-01T00:00:00</data:ReleaseDate>\r\n" +
-        "  <data:DiscontinuedDate 
metadata:type=\"Edm.DateTime\">2006-10-01T00:00:00</data:DiscontinuedDate>\r\n" 
+
-        "            <data:Rating 
metadata:type=\"Edm.Int16\">3</data:Rating>\r\n" +
-        "            <data:Price 
metadata:type=\"Edm.Double\">19.9</data:Price>\r\n" +
-        "        </metadata:properties>\r\n" +
-        "    </content>\r\n" +
-        " </entry>";
-
-    final AtomDeserializer deserializer = new AtomDeserializer();
-    final InputStream in = new ByteArrayInputStream(content.getBytes("UTF-8"));
-    final ResWrap<Entity> entity = deserializer.toEntity(in);
-
-    assertNotNull(entity);
-    
assertNull(entity.getPayload().getNavigationLink("Supplier").getInlineEntitySet());
-  }
-
-  @Test
-  public void filledInlineEntity() throws Exception {
-    final String content = "" +
-        "<entry xmlns=\"http://www.w3.org/2005/Atom\"; "
-        + "xmlns:data=\"http://docs.oasis-open.org/odata/ns/data\"; "
-        + "xmlns:metadata=\"http://docs.oasis-open.org/odata/ns/metadata\"; "
-        + "xmlns:georss=\"http://www.georss.org/georss\"; "
-        + "xmlns:gml=\"http://www.opengis.net/gml\"; "
-        + "xml:base=\"http://services.odata.org/V4/OData/OData.svc/\";>\r\n" +
-        "    
<id>http://services.odata.org/V4/OData/OData.svc/Products(3)</id>\r\n" +
-        "    <category term=\"#ODataDemo.Product\" "
-        + "scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"; />\r\n" +
-        "    \r\n" +
-        "    <link rel=\"edit\" title=\"Product\" href=\"Products\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Categories\"; "
-        + "type=\"application/atom+xml;type=feed\" title=\"Categories\" 
href=\"Products(3)/Categories\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Supplier\"; "
-        + "type=\"application/atom+xml;type=entry\" title=\"Supplier\" 
href=\"Products(3)/Supplier\">\r\n" +
-        "    <metadata:inline>\r\n" +
-        "       <entry>\r\n" +
-        "            
<id>http://services.odata.org/V4/OData/OData.svc/Suppliers(0)</id>\r\n" +
-        "            <category term=\"ODataDemo.Supplier\" "
-        + "scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"; />\r\n" +
-        "            <link rel=\"edit\" title=\"Supplier\" 
href=\"Suppliers(0)\" />\r\n" +
-        "            <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Products\"; "
-        + "type=\"application/atom+xml;type=feed\" title=\"Products\" 
href=\"Suppliers(0)/Products\" />\r\n" +
-        "            <title type=\"text\">Exotic Liquids</title>\r\n" +
-        "            <updated>2015-01-26T08:57:02Z</updated>\r\n" +
-        "            <author>\r\n" +
-        "                <name />\r\n" +
-        "            </author>\r\n" +
-        "            <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Products\"; "
-        + "type=\"application/xml\" title=\"Products\" 
href=\"Suppliers(0)/$links/Products\" />\r\n" +
-        "            <content type=\"application/xml\">\r\n" +
-        "                 <metadata:properties>\r\n" +
-        "                    <data:ID 
metadata:type=\"Edm.Int32\">0</data:ID>\r\n" +
-        "                    <data:Name>Exotic Liquids</data:Name>\r\n" +
-        "                    <data:Address 
metadata:type=\"ODataDemo.Address\">\r\n" +
-        "                    <data:Street>NE 228th</data:Street>\r\n" +
-        "                    <data:City>Sammamish</data:City>\r\n" +
-        "                    <data:State>WA</data:State>\r\n" +
-        "                    <data:ZipCode>98074</data:ZipCode>\r\n" +
-        "                    <data:Country>USA</data:Country>\r\n" +
-        "                     </data:Address>\r\n" +
-        "                    <data:Location 
metadata:type=\"Edm.GeographyPoint\">\r\n" +
-        "                    <gml:Point 
gml:srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\";>\r\n" +
-        "                    <gml:pos>47.6316604614258 
-122.03547668457</gml:pos>\r\n" +
-        "                    </gml:Point>\r\n" +
-        "                    </data:Location>\r\n" +
-        "                    <data:Concurrency 
metadata:type=\"Edm.Int32\">0</data:Concurrency>\r\n" +
-        "                 </metadata:properties>\r\n" +
-        "            </content>\r\n" +
-        "         </entry>" +
-        "    </metadata:inline>\r\n" +
-        "    </link>\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/ProductDetail\"; "
-        + "type=\"application/atom+xml;type=entry\" "
-        + "title=\"ProductDetail\" href=\"Products(3)/ProductDetail\" />\r\n" +
-        "    <title type=\"text\">Havina Cola</title>\r\n" +
-        "    <summary type=\"text\">The Original Key Lime Cola</summary>\r\n" +
-        "    <updated>2015-01-26T08:57:02Z</updated>\r\n" +
-        "    <author>\r\n" +
-        "        <name />\r\n" +
-        "    </author>\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Categories\"; "
-        + "type=\"application/xml\" title=\"Categories\" 
href=\"Products(3)/$links/Categories\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier\"; "
-        + "type=\"application/xml\" title=\"Supplier\" 
href=\"Products(3)/$links/Supplier\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail\"; "
-        + "type=\"application/xml\" title=\"ProductDetail\" 
href=\"Products(3)/$links/ProductDetail\" />\r\n" +
-        "    <content type=\"application/xml\">\r\n" +
-        "        <metadata:properties>\r\n" +
-        "            <data:ID metadata:type=\"Edm.Int32\">3</data:ID>\r\n" +
-        "            <data:ReleaseDate 
metadata:type=\"Edm.DateTime\">2005-10-01T00:00:00</data:ReleaseDate>\r\n" +
-        "  <data:DiscontinuedDate 
metadata:type=\"Edm.DateTime\">2006-10-01T00:00:00</data:DiscontinuedDate>\r\n" 
+
-        "            <data:Rating 
metadata:type=\"Edm.Int16\">3</data:Rating>\r\n" +
-        "            <data:Price 
metadata:type=\"Edm.Double\">19.9</data:Price>\r\n" +
-        "        </metadata:properties>\r\n" +
-        "    </content>\r\n" +
-        " </entry>";
-    final AtomDeserializer deserializer = new AtomDeserializer();
-    final InputStream in = new ByteArrayInputStream(content.getBytes("UTF-8"));
-    final ResWrap<Entity> entity = deserializer.toEntity(in);
-
-    assertNotNull(entity);
-    final Entity inlineEntity = 
entity.getPayload().getNavigationLink("Supplier").getInlineEntity();
-    assertNotNull(inlineEntity);
-
-    assertEquals(new Integer(0), inlineEntity.getProperty("ID").getValue());
-    assertEquals("Exotic Liquids", 
inlineEntity.getProperty("Name").getValue());
-  }
-
-  @Test
-  public void emptyInlineEntityCollection() throws Exception {
-    final String content = "" +
-        "<entry xmlns=\"http://www.w3.org/2005/Atom\"; "
-        + "xmlns:data=\"http://docs.oasis-open.org/odata/ns/data\"; "
-        + "xmlns:metadata=\"http://docs.oasis-open.org/odata/ns/metadata\"; "
-        + "xmlns:georss=\"http://www.georss.org/georss\"; 
xmlns:gml=\"http://www.opengis.net/gml\"; "
-        + "xml:base=\"http://services.odata.org/V3/OData/OData.svc/\";>\r\n" +
-        "    
<id>http://services.odata.org/V3/OData/OData.svc/Products(3)</id>\r\n" +
-        "    <category term=\"ODataDemo.Product\" "
-        + "scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"; />\r\n" +
-        "    \r\n" +
-        "    <link rel=\"edit\" title=\"Product\" href=\"Products(3)\" />\r\n" 
+
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Categories\"; "
-        + "type=\"application/atom+xml;type=feed\" title=\"Categories\" 
href=\"Products(3)/Categories\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Supplier\"; "
-        + "type=\"application/atom+xml;type=feed\" title=\"Supplier\" 
href=\"Products(3)/Supplier\">\r\n" +
-        "    <metadata:inline>\r\n" +
-        "        <feed>\r\n" +
-        "         </feed>\r\n" +
-        "    </metadata:inline>\r\n" +
-        "    </link>\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/ProductDetail\"; "
-        + "type=\"application/atom+xml;type=entry\" "
-        + "title=\"ProductDetail\" href=\"Products(3)/ProductDetail\" />\r\n" +
-        "    <title type=\"text\">Havina Cola</title>\r\n" +
-        "    <summary type=\"text\">The Original Key Lime Cola</summary>\r\n" +
-        "    <updated>2015-01-26T08:57:02Z</updated>\r\n" +
-        "    <author>\r\n" +
-        "        <name />\r\n" +
-        "    </author>\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Categories\"; "
-        + "type=\"application/xml\" title=\"Categories\" 
href=\"Products(3)/$links/Categories\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier\"; "
-        + "type=\"application/xml\" title=\"Supplier\" 
href=\"Products(3)/$links/Supplier\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail\"; "
-        + "type=\"application/xml\" title=\"ProductDetail\" 
href=\"Products(3)/$links/ProductDetail\" />\r\n" +
-        "    <content type=\"application/xml\">\r\n" +
-        "        <metadata:properties>\r\n" +
-        "            <data:ID metadata:type=\"Edm.Int32\">3</data:ID>\r\n" +
-        "            <data:ReleaseDate 
metadata:type=\"Edm.DateTime\">2005-10-01T00:00:00</data:ReleaseDate>\r\n" +
-        "  <data:DiscontinuedDate 
metadata:type=\"Edm.DateTime\">2006-10-01T00:00:00</data:DiscontinuedDate>\r\n" 
+
-        "            <data:Rating 
metadata:type=\"Edm.Int16\">3</data:Rating>\r\n" +
-        "            <data:Price 
metadata:type=\"Edm.Double\">19.9</data:Price>\r\n" +
-        "        </metadata:properties>\r\n" +
-        "    </content>\r\n" +
-        " </entry>";
-    final AtomDeserializer deserializer = new AtomDeserializer();
-    final InputStream in = new ByteArrayInputStream(content.getBytes("UTF-8"));
-    final ResWrap<Entity> entity = deserializer.toEntity(in);
-
-    assertNotNull(entity);
-    final EntityCollection inlineEntitySet = 
entity.getPayload().getNavigationLink("Supplier").getInlineEntitySet();
-    assertNotNull(inlineEntitySet);
-    assertEquals(0, inlineEntitySet.getEntities().size());
-  }
-
-  @Test
-  public void filledInlineEntityCollection() throws Exception {
-    final String content = "" +
-        "<entry xmlns=\"http://www.w3.org/2005/Atom\"; "
-        + "xmlns:data=\"http://docs.oasis-open.org/odata/ns/data\"; "
-        + "xmlns:metadata=\"http://docs.oasis-open.org/odata/ns/metadata\"; "
-        + "xmlns:georss=\"http://www.georss.org/georss\"; 
xmlns:gml=\"http://www.opengis.net/gml\"; "
-        + "xml:base=\"http://services.odata.org/V3/OData/OData.svc/\";>\r\n" +
-        "    
<id>http://services.odata.org/V3/OData/OData.svc/Products(3)</id>\r\n" +
-        "    <category term=\"ODataDemo.Product\" "
-        + "scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"; />\r\n" +
-        "    \r\n" +
-        "    <link rel=\"edit\" title=\"Product\" href=\"Products(3)\" />\r\n" 
+
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Categories\"; "
-        + "type=\"application/atom+xml;type=feed\" title=\"Categories\" 
href=\"Products(3)/Categories\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Supplier\"; "
-        + "type=\"application/atom+xml;type=feed\" title=\"Supplier\" 
href=\"Products(3)/Supplier\">\r\n" +
-        "    <metadata:inline>\r\n" +
-        "        <feed>\r\n" +
-        "        <entry>\r\n" +
-        "            
<id>http://services.odata.org/V3/OData/OData.svc/Suppliers(0)</id>\r\n" +
-        "            <category term=\"ODataDemo.Supplier\" "
-        + "scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"; />\r\n" +
-        "            <link rel=\"edit\" title=\"Supplier\" 
href=\"Suppliers(0)\" />\r\n" +
-        "            <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/Products\"; "
-        + "type=\"application/atom+xml;type=feed\" title=\"Products\" 
href=\"Suppliers(0)/Products\" />\r\n" +
-        "            <title type=\"text\">Exotic Liquids</title>\r\n" +
-        "            <updated>2015-01-26T08:57:02Z</updated>\r\n" +
-        "            <author>\r\n" +
-        "                <name />\r\n" +
-        "            </author>\r\n" +
-        "            <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Products\"; "
-        + "type=\"application/xml\" title=\"Products\" 
href=\"Suppliers(0)/$links/Products\" />\r\n" +
-        "            <content type=\"application/xml\">\r\n" +
-        "                 <metadata:properties>\r\n" +
-        "                    <data:ID 
metadata:type=\"Edm.Int32\">0</data:ID>\r\n" +
-        "                    <data:Name>Exotic Liquids</data:Name>\r\n" +
-        "                    <data:Address 
metadata:type=\"ODataDemo.Address\">\r\n" +
-        "                    <data:Street>NE 228th</data:Street>\r\n" +
-        "                    <data:City>Sammamish</data:City>\r\n" +
-        "                    <data:State>WA</data:State>\r\n" +
-        "                    <data:ZipCode>98074</data:ZipCode>\r\n" +
-        "                    <data:Country>USA</data:Country>\r\n" +
-        "                     </data:Address>\r\n" +
-        "                    <data:Location 
metadata:type=\"Edm.GeographyPoint\">\r\n" +
-        "                    <gml:Point 
gml:srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\";>\r\n" +
-        "                    <gml:pos>47.6316604614258 
-122.03547668457</gml:pos>\r\n" +
-        "                    </gml:Point>\r\n" +
-        "                    </data:Location>\r\n" +
-        "                    <data:Concurrency 
metadata:type=\"Edm.Int32\">0</data:Concurrency>\r\n" +
-        "                 </metadata:properties>\r\n" +
-        "            </content>\r\n" +
-        "         </entry>\r\n" +
-        "         </feed>\r\n" +
-        "    </metadata:inline>\r\n" +
-        "    </link>\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/related/ProductDetail\"; "
-        + "type=\"application/atom+xml;type=entry\" "
-        + "title=\"ProductDetail\" href=\"Products(3)/ProductDetail\" />\r\n" +
-        "    <title type=\"text\">Havina Cola</title>\r\n" +
-        "    <summary type=\"text\">The Original Key Lime Cola</summary>\r\n" +
-        "    <updated>2015-01-26T08:57:02Z</updated>\r\n" +
-        "    <author>\r\n" +
-        "        <name />\r\n" +
-        "    </author>\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Categories\"; "
-        + "type=\"application/xml\" title=\"Categories\" 
href=\"Products(3)/$links/Categories\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier\"; "
-        + "type=\"application/xml\" title=\"Supplier\" 
href=\"Products(3)/$links/Supplier\" />\r\n" +
-        "    <link 
rel=\"http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail\"; "
-        + "type=\"application/xml\" title=\"ProductDetail\" 
href=\"Products(3)/$links/ProductDetail\" />\r\n" +
-        "    <content type=\"application/xml\">\r\n" +
-        "        <metadata:properties>\r\n" +
-        "            <data:ID metadata:type=\"Edm.Int32\">3</data:ID>\r\n" +
-        "            <data:ReleaseDate 
metadata:type=\"Edm.DateTime\">2005-10-01T00:00:00</data:ReleaseDate>\r\n" +
-        "  <data:DiscontinuedDate 
metadata:type=\"Edm.DateTime\">2006-10-01T00:00:00</data:DiscontinuedDate>\r\n" 
+
-        "            <data:Rating 
metadata:type=\"Edm.Int16\">3</data:Rating>\r\n" +
-        "            <data:Price 
metadata:type=\"Edm.Double\">19.9</data:Price>\r\n" +
-        "        </metadata:properties>\r\n" +
-        "    </content>\r\n" +
-        " </entry>";
-    final AtomDeserializer deserializer = new AtomDeserializer();
-    final InputStream in = new ByteArrayInputStream(content.getBytes("UTF-8"));
-    final ResWrap<Entity> entity = deserializer.toEntity(in);
-
-    assertNotNull(entity);
-    final EntityCollection inlineEntitySet = 
entity.getPayload().getNavigationLink("Supplier").getInlineEntitySet();
-    assertNotNull(inlineEntitySet);
-    assertEquals(1, inlineEntitySet.getEntities().size());
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/20351253/lib/commons-core/src/test/java/org/apache/olingo/commons/core/serialization/ContextURLParserTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/serialization/ContextURLParserTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/serialization/ContextURLParserTest.java
deleted file mode 100644
index 7c401e1..0000000
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/serialization/ContextURLParserTest.java
+++ /dev/null
@@ -1,255 +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.serialization;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.net.URI;
-
-import org.apache.olingo.commons.api.data.ContextURL;
-import org.junit.Test;
-
-public class ContextURLParserTest {
-
-  @Test
-  public void collectionOfEntities() {
-    ContextURL contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Customers";));
-
-    assertEquals(URI.create("http://host/service/";), 
contextURL.getServiceRoot());
-    assertEquals("Customers", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-
-    contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Orders(4711)/Items"));
-
-    assertEquals("Orders", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertEquals("Items", contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-
-    contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Me/Folders('Inbox')/Messages"));
-
-    assertEquals("Me/Folders", contextURL.getEntitySetOrSingletonOrType());
-    assertEquals("Messages", contextURL.getNavOrPropertyPath());
-  }
-
-  @Test
-  public void entity() {
-    ContextURL contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Customers/$entity";));
-
-    assertEquals("Customers", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertTrue(contextURL.isEntity());
-
-    contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Orders(4711)/Items/$entity"));
-
-    assertEquals("Orders/Items", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertTrue(contextURL.isEntity());
-
-    contextURL = ContextURLParser.parse(
-        
URI.create("http://host/service/$metadata#Users('user')/Messages('message')/Attachments/$entity"));
-
-    assertEquals("Users/Messages/Attachments", 
contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertTrue(contextURL.isEntity());
-
-    // v3
-    contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Products/@Element";));
-
-    assertEquals("Products", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertTrue(contextURL.isEntity());
-  }
-
-  @Test
-  public void singleton() {
-    ContextURL contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Contoso";));
-
-    assertEquals("Contoso", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-
-  @Test
-  public void collectionOfDerivedEntities() {
-    final ContextURL contextURL = ContextURLParser.parse(
-        
URI.create("http://host/service/$metadata#Customers/Model.VipCustomer";));
-
-    assertEquals("Customers", contextURL.getEntitySetOrSingletonOrType());
-    assertEquals("Model.VipCustomer", contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-
-  @Test
-  public void derivedEntity() {
-    final ContextURL contextURL = ContextURLParser.parse(
-        
URI.create("http://host/service/$metadata#Customers/Model.VipCustomer/$entity";));
-
-    assertEquals("Customers", contextURL.getEntitySetOrSingletonOrType());
-    assertEquals("Model.VipCustomer", contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertTrue(contextURL.isEntity());
-  }
-
-  @Test
-  public void collectionOfProjectedEntities() {
-    final ContextURL contextURL = ContextURLParser.parse(
-        URI.create("http://host/service/$metadata#Customers(Address,Orders)"));
-
-    assertEquals("Customers", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertEquals("Address,Orders", contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-
-  @Test
-  public void projectedEntity() {
-    ContextURL contextURL = ContextURLParser.parse(
-        
URI.create("http://host/service/$metadata#Customers(Name,Rating)/$entity"));
-
-    assertEquals("Customers", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertEquals("Name,Rating", contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertTrue(contextURL.isEntity());
-
-    contextURL = ContextURLParser.parse(
-        
URI.create("http://host/service/$metadata#Customers(Name,Address/Country)"));
-
-    assertEquals("Customers", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertEquals("Name,Address/Country", contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-
-  @Test
-  public void collectionOfProjectedExpandedEntities() {
-    final ContextURL contextURL = ContextURLParser.parse(
-        URI.create("http://host/service/$metadata#Employees/";
-            + 
"Sales.Manager(DirectReports,DirectReports+(FirstName,LastName))"));
-
-    assertEquals("Employees", contextURL.getEntitySetOrSingletonOrType());
-    assertEquals("Sales.Manager", contextURL.getDerivedEntity());
-    assertEquals("DirectReports,DirectReports+(FirstName,LastName)", 
contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-
-  @Test
-  public void propertyValue() {
-    final ContextURL contextURL = ContextURLParser.parse(
-        URI.create("http://host/service/$metadata#Customers(1)/Addresses"));
-
-    assertEquals("Customers", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertEquals("Addresses", contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-
-  @Test
-  public void CollectionOfComplexOrPrimitiveTypes() {
-    final ContextURL contextURL = ContextURLParser.parse(
-        URI.create("http://host/service/$metadata#Collection(Edm.String)"));
-
-    assertEquals("Collection(Edm.String)", 
contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-
-  @Test
-  public void complexOrPrimitiveType() {
-    ContextURL contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Edm.String";));
-
-    assertEquals("Edm.String", contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-
-    contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#ODataDemo.Address";));
-
-    assertEquals("ODataDemo.Address", 
contextURL.getEntitySetOrSingletonOrType());
-    assertNull(contextURL.getDerivedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-
-  @Test
-  public void reference() {
-    ContextURL contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Customers/$ref";));
-    assertTrue(contextURL.isReference());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-    assertFalse(contextURL.isDelta());
-  }
-
-  @Test
-  public void delta() {
-    ContextURL contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Customers/$delta";));
-    assertTrue(contextURL.isDelta());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-
-    contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Customers/$deletedLink";));
-    assertTrue(contextURL.isDeltaDeletedLink());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-
-    contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Customers/$link";));
-    assertTrue(contextURL.isDeltaLink());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-
-    contextURL = 
ContextURLParser.parse(URI.create("http://host/service/$metadata#Customers/$deletedEntity";));
-    assertTrue(contextURL.isDeltaDeletedEntity());
-    assertNull(contextURL.getSelectList());
-    assertNull(contextURL.getNavOrPropertyPath());
-    assertFalse(contextURL.isEntity());
-  }
-}

Reply via email to