You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/06/19 18:22:58 UTC
[05/28] olingo-odata4 git commit: [OLINGO-699] Moved serializer code
to client module
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());
- }
-}