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 2014/09/23 15:01:36 UTC
[5/6] git commit: [OLINGO-422] Minor code refactorings and fixes
[OLINGO-422] Minor code refactorings and fixes
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/588ae2a7
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/588ae2a7
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/588ae2a7
Branch: refs/heads/master
Commit: 588ae2a70c8593dba382f65b20940cd5c94ac431
Parents: a1d9f74
Author: Michael Bolz <mi...@sap.com>
Authored: Wed Sep 17 10:53:33 2014 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Wed Sep 17 10:53:33 2014 +0200
----------------------------------------------------------------------
.../core/serializer/utils/ContextURLHelper.java | 15 +--
.../core/serializer/ExpandSelectMock.java | 90 ++++++++++++++
.../json/ODataJsonSerializerTest.java | 116 +++++--------------
.../serializer/utils/ContextURLHelperTest.java | 82 ++++++++-----
4 files changed, 184 insertions(+), 119 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/588ae2a7/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java
index 49aa3c3..5c7d3a6 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelper.java
@@ -47,8 +47,7 @@ public final class ContextURLHelper {
public static String buildSelectList(final EdmEntityType entityType,
final ExpandOption expand, final SelectOption select) throws ODataSerializerException {
StringBuilder result = new StringBuilder();
- boolean isSelected = select != null && select.getSelectItems() != null && !select.getSelectItems().isEmpty();
- if(isSelected) {
+ if (ExpandSelectHelper.hasSelect(select)) {
handleSelect(entityType, select, result);
}
@@ -58,7 +57,7 @@ public final class ContextURLHelper {
return result.length() == 0 ? null : result.toString();
}
- private static void handleSelect(EdmEntityType entityType, SelectOption select, StringBuilder result) {
+ private static void handleSelect(final EdmEntityType entityType, final SelectOption select, StringBuilder result) {
if (ExpandSelectHelper.isAll(select)) {
result.append('*');
} else {
@@ -98,7 +97,7 @@ public final class ContextURLHelper {
}
}
- private static void handleExpand(EdmEntityType entityType, ExpandOption expand, StringBuilder result)
+ private static void handleExpand(final EdmEntityType entityType, final ExpandOption expand, StringBuilder result)
throws ODataSerializerException {
final Set<String> expandedPropertyNames = ExpandSelectHelper.getExpandedPropertyNames(expand.getExpandItems());
for (final String propertyName : entityType.getNavigationPropertyNames()) {
@@ -109,10 +108,12 @@ public final class ContextURLHelper {
|| ExpandSelectHelper.hasSelect(expandItem.getSelectOption())) {
final String innerSelectList = buildSelectList(entityType.getNavigationProperty(propertyName).getType(),
expandItem.getExpandOption(), expandItem.getSelectOption());
- if (result.length() > 0) {
- result.append(',');
+ if (innerSelectList != null) {
+ if (result.length() > 0) {
+ result.append(',');
+ }
+ result.append(Encoder.encode(propertyName)).append('(').append(innerSelectList).append(')');
}
- result.append(Encoder.encode(propertyName)).append('(').append(innerSelectList).append(')');
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/588ae2a7/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/ExpandSelectMock.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/ExpandSelectMock.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/ExpandSelectMock.java
new file mode 100644
index 0000000..1bf2c9d
--- /dev/null
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/ExpandSelectMock.java
@@ -0,0 +1,90 @@
+/*
+ * 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.server.core.serializer;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.EdmElement;
+import org.apache.olingo.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.commons.api.edm.EdmProperty;
+import org.apache.olingo.commons.api.edm.EdmStructuredType;
+import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.server.api.uri.UriInfoResource;
+import org.apache.olingo.server.api.uri.UriResource;
+import org.apache.olingo.server.api.uri.UriResourceNavigation;
+import org.apache.olingo.server.api.uri.UriResourceProperty;
+import org.apache.olingo.server.api.uri.queryoption.ExpandItem;
+import org.apache.olingo.server.api.uri.queryoption.ExpandOption;
+import org.apache.olingo.server.api.uri.queryoption.SelectItem;
+import org.apache.olingo.server.api.uri.queryoption.SelectOption;
+import org.mockito.Mockito;
+
+public final class ExpandSelectMock {
+
+ private static UriInfoResource mockResource(final EdmEntitySet edmEntitySet, final String... names) {
+ EdmStructuredType type = edmEntitySet.getEntityType();
+ List<UriResource> elements = new ArrayList<UriResource>();
+ for (final String name : Arrays.asList(names)) {
+ final EdmElement edmElement = type.getProperty(name);
+ if (edmElement.getType().getKind() == EdmTypeKind.ENTITY) {
+ UriResourceNavigation element = Mockito.mock(UriResourceNavigation.class);
+ Mockito.when(element.getProperty()).thenReturn((EdmNavigationProperty) edmElement);
+ elements.add(element);
+ } else {
+ final EdmProperty property = (EdmProperty) edmElement;
+ UriResourceProperty element = Mockito.mock(UriResourceProperty.class);
+ Mockito.when(element.getProperty()).thenReturn(property);
+ elements.add(element);
+ type = property.isPrimitive() ? null : (EdmStructuredType) property.getType();
+ }
+ }
+ UriInfoResource resource = Mockito.mock(UriInfoResource.class);
+ Mockito.when(resource.getUriResourceParts()).thenReturn(elements);
+ return resource;
+ }
+
+ public static SelectItem mockSelectItem(final EdmEntitySet edmEntitySet, final String... names) {
+ final UriInfoResource resource = mockResource(edmEntitySet, names);
+ SelectItem selectItem = Mockito.mock(SelectItem.class);
+ Mockito.when(selectItem.getResourcePath()).thenReturn(resource);
+ return selectItem;
+ }
+
+ public static SelectOption mockSelectOption(final List<SelectItem> selectItems) {
+ SelectOption select = Mockito.mock(SelectOption.class);
+ Mockito.when(select.getSelectItems()).thenReturn(selectItems);
+ return select;
+ }
+
+ public static ExpandItem mockExpandItem(final EdmEntitySet edmEntitySet, final String... names) {
+ final UriInfoResource resource = mockResource(edmEntitySet, names);
+ ExpandItem expandItem = Mockito.mock(ExpandItem.class);
+ Mockito.when(expandItem.getResourcePath()).thenReturn(resource);
+ return expandItem;
+ }
+
+ public static ExpandOption mockExpandOption(final List<ExpandItem> expandItems) {
+ ExpandOption expand = Mockito.mock(ExpandOption.class);
+ Mockito.when(expand.getExpandItems()).thenReturn(expandItems);
+ return expand;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/588ae2a7/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java
index c22f677..83e2173 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java
@@ -20,9 +20,7 @@ package org.apache.olingo.server.core.serializer.json;
import java.io.InputStream;
import java.net.URI;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.List;
import org.apache.commons.io.IOUtils;
import org.apache.olingo.commons.api.data.ContextURL;
@@ -31,28 +29,20 @@ import org.apache.olingo.commons.api.data.Entity;
import org.apache.olingo.commons.api.data.EntitySet;
import org.apache.olingo.commons.api.data.ValueType;
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmElement;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
-import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
-import org.apache.olingo.commons.api.edm.EdmProperty;
-import org.apache.olingo.commons.api.edm.EdmStructuredType;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.format.ODataFormat;
import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.serializer.ODataSerializer;
import org.apache.olingo.server.api.serializer.ODataSerializerException;
import org.apache.olingo.server.api.serializer.ODataSerializerOptions;
-import org.apache.olingo.server.api.uri.UriInfoResource;
-import org.apache.olingo.server.api.uri.UriResource;
-import org.apache.olingo.server.api.uri.UriResourceNavigation;
-import org.apache.olingo.server.api.uri.UriResourceProperty;
import org.apache.olingo.server.api.uri.queryoption.CountOption;
import org.apache.olingo.server.api.uri.queryoption.ExpandItem;
import org.apache.olingo.server.api.uri.queryoption.ExpandOption;
import org.apache.olingo.server.api.uri.queryoption.SelectItem;
import org.apache.olingo.server.api.uri.queryoption.SelectOption;
+import org.apache.olingo.server.core.serializer.ExpandSelectMock;
import org.apache.olingo.server.tecsvc.data.DataProvider;
import org.apache.olingo.server.tecsvc.provider.EdmTechProvider;
import org.hamcrest.CoreMatchers;
@@ -347,9 +337,10 @@ public class ODataJsonSerializerTest {
public void select() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim");
final Entity entity = data.readAll(edmEntitySet).getEntities().get(0);
- final SelectItem selectItem1 = mockSelectItem(edmEntitySet, "PropertyDate");
- final SelectItem selectItem2 = mockSelectItem(edmEntitySet, "PropertyBoolean");
- final SelectOption select = mockSelectOption(Arrays.asList(selectItem1, selectItem2, selectItem2));
+ final SelectItem selectItem1 = ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyDate");
+ final SelectItem selectItem2 = ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyBoolean");
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ selectItem1, selectItem2, selectItem2));
InputStream result = serializer
.entity(edmEntitySet, entity,
ODataSerializerOptions.with()
@@ -369,10 +360,10 @@ public class ODataJsonSerializerTest {
public void selectAll() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESTwoPrim");
final Entity entity = data.readAll(edmEntitySet).getEntities().get(0);
- final SelectItem selectItem1 = mockSelectItem(edmEntitySet, "PropertyString");
+ final SelectItem selectItem1 = ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyString");
SelectItem selectItem2 = Mockito.mock(SelectItem.class);
Mockito.when(selectItem2.isStar()).thenReturn(true);
- final SelectOption select = mockSelectOption(Arrays.asList(selectItem1, selectItem2));
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(selectItem1, selectItem2));
InputStream result = serializer.entity(edmEntitySet, entity,
ODataSerializerOptions.with()
.contextURL(ContextURL.with().entitySet(edmEntitySet).suffix(Suffix.ENTITY).build())
@@ -388,8 +379,8 @@ public class ODataJsonSerializerTest {
public void selectComplex() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp");
final EntitySet entitySet = data.readAll(edmEntitySet);
- final SelectOption select = mockSelectOption(Arrays.asList(
- mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString")));
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString")));
InputStream result = serializer
.entitySet(edmEntitySet, entitySet,
ODataSerializerOptions.with()
@@ -411,9 +402,9 @@ public class ODataJsonSerializerTest {
public void selectComplexTwice() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp");
final EntitySet entitySet = data.readAll(edmEntitySet);
- final SelectOption select = mockSelectOption(Arrays.asList(
- mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString"),
- mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp")));
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString"),
+ ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp")));
final String resultString = IOUtils.toString(serializer
.entitySet(edmEntitySet, entitySet,
ODataSerializerOptions.with()
@@ -434,8 +425,8 @@ public class ODataJsonSerializerTest {
public void expand() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESTwoPrim");
final Entity entity = data.readAll(edmEntitySet).getEntities().get(3);
- final ExpandOption expand = mockExpandOption(Arrays.asList(
- mockExpandItem(edmEntitySet, "NavPropertyETAllPrimOne")));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(
+ ExpandSelectMock.mockExpandItem(edmEntitySet, "NavPropertyETAllPrimOne")));
InputStream result = serializer.entity(edmEntitySet, entity,
ODataSerializerOptions.with()
.contextURL(ContextURL.with().entitySet(edmEntitySet).suffix(Suffix.ENTITY).build())
@@ -468,11 +459,11 @@ public class ODataJsonSerializerTest {
public void expandSelect() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESTwoPrim");
final Entity entity = data.readAll(edmEntitySet).getEntities().get(3);
- final SelectOption select = mockSelectOption(Arrays.asList(
- mockSelectItem(entityContainer.getEntitySet("ESAllPrim"), "PropertyDate")));
- ExpandItem expandItem = mockExpandItem(edmEntitySet, "NavPropertyETAllPrimOne");
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ ExpandSelectMock.mockSelectItem(entityContainer.getEntitySet("ESAllPrim"), "PropertyDate")));
+ ExpandItem expandItem = ExpandSelectMock.mockExpandItem(edmEntitySet, "NavPropertyETAllPrimOne");
Mockito.when(expandItem.getSelectOption()).thenReturn(select);
- final ExpandOption expand = mockExpandOption(Arrays.asList(expandItem));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItem));
final String resultString = IOUtils.toString(serializer
.entity(edmEntitySet, entity,
ODataSerializerOptions.with()
@@ -492,11 +483,13 @@ public class ODataJsonSerializerTest {
public void expandAll() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim");
final Entity entity = data.readAll(edmEntitySet).getEntities().get(0);
- final ExpandItem expandItem = mockExpandItem(edmEntitySet, "NavPropertyETTwoPrimOne");
+ final ExpandItem expandItem = ExpandSelectMock.mockExpandItem(edmEntitySet, "NavPropertyETTwoPrimOne");
ExpandItem expandItemAll = Mockito.mock(ExpandItem.class);
Mockito.when(expandItemAll.isStar()).thenReturn(true);
- final ExpandOption expand = mockExpandOption(Arrays.asList(expandItem, expandItem, expandItemAll));
- final SelectOption select = mockSelectOption(Arrays.asList(mockSelectItem(edmEntitySet, "PropertySByte")));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(
+ expandItem, expandItem, expandItemAll));
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertySByte")));
final String resultString = IOUtils.toString(serializer
.entity(edmEntitySet, entity,
ODataSerializerOptions.with()
@@ -520,8 +513,9 @@ public class ODataJsonSerializerTest {
final Entity entity = data.readAll(edmEntitySet).getEntities().get(1);
ExpandItem expandItemAll = Mockito.mock(ExpandItem.class);
Mockito.when(expandItemAll.isStar()).thenReturn(true);
- final ExpandOption expand = mockExpandOption(Arrays.asList(expandItemAll));
- final SelectOption select = mockSelectOption(Arrays.asList(mockSelectItem(edmEntitySet, "PropertyTimeOfDay")));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItemAll));
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyTimeOfDay")));
final String resultString = IOUtils.toString(serializer
.entity(edmEntitySet, entity,
ODataSerializerOptions.with()
@@ -545,13 +539,13 @@ public class ODataJsonSerializerTest {
final Entity entity = data.readAll(edmEntitySet).getEntities().get(1);
ExpandItem expandItemSecond = Mockito.mock(ExpandItem.class);
Mockito.when(expandItemSecond.isStar()).thenReturn(true);
- final ExpandOption expandInner = mockExpandOption(Arrays.asList(expandItemSecond));
- ExpandItem expandItemFirst = mockExpandItem(edmEntitySet, "NavPropertyETAllPrimMany");
+ final ExpandOption expandInner = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItemSecond));
+ ExpandItem expandItemFirst = ExpandSelectMock.mockExpandItem(edmEntitySet, "NavPropertyETAllPrimMany");
Mockito.when(expandItemFirst.getExpandOption()).thenReturn(expandInner);
- final SelectOption select = mockSelectOption(Arrays.asList(
- mockSelectItem(innerEntitySet, "PropertyInt32")));
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ ExpandSelectMock.mockSelectItem(innerEntitySet, "PropertyInt32")));
Mockito.when(expandItemFirst.getSelectOption()).thenReturn(select);
- final ExpandOption expand = mockExpandOption(Arrays.asList(expandItemFirst));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItemFirst));
final String resultString = IOUtils.toString(serializer
.entity(edmEntitySet, entity,
ODataSerializerOptions.with()
@@ -572,52 +566,4 @@ public class ODataJsonSerializerTest {
+ "{\"PropertyInt16\":32767,\"PropertyString\":\"Test String4\"}]}]}",
resultString);
}
-
- private static UriInfoResource mockResource(final EdmEntitySet edmEntitySet, final String... names) {
- EdmStructuredType type = edmEntitySet.getEntityType();
- List<UriResource> elements = new ArrayList<UriResource>();
- for (final String name : Arrays.asList(names)) {
- final EdmElement edmElement = type.getProperty(name);
- if (edmElement.getType().getKind() == EdmTypeKind.ENTITY) {
- UriResourceNavigation element = Mockito.mock(UriResourceNavigation.class);
- Mockito.when(element.getProperty()).thenReturn((EdmNavigationProperty) edmElement);
- elements.add(element);
- } else {
- final EdmProperty property = (EdmProperty) edmElement;
- UriResourceProperty element = Mockito.mock(UriResourceProperty.class);
- Mockito.when(element.getProperty()).thenReturn(property);
- elements.add(element);
- type = property.isPrimitive() ? null : (EdmStructuredType) property.getType();
- }
- }
- UriInfoResource resource = Mockito.mock(UriInfoResource.class);
- Mockito.when(resource.getUriResourceParts()).thenReturn(elements);
- return resource;
- }
-
- public static SelectItem mockSelectItem(final EdmEntitySet edmEntitySet, final String... names) {
- final UriInfoResource resource = mockResource(edmEntitySet, names);
- SelectItem selectItem = Mockito.mock(SelectItem.class);
- Mockito.when(selectItem.getResourcePath()).thenReturn(resource);
- return selectItem;
- }
-
- public static SelectOption mockSelectOption(final List<SelectItem> selectItems) {
- SelectOption select = Mockito.mock(SelectOption.class);
- Mockito.when(select.getSelectItems()).thenReturn(selectItems);
- return select;
- }
-
- public static ExpandItem mockExpandItem(final EdmEntitySet edmEntitySet, final String... names) {
- final UriInfoResource resource = mockResource(edmEntitySet, names);
- ExpandItem expandItem = Mockito.mock(ExpandItem.class);
- Mockito.when(expandItem.getResourcePath()).thenReturn(resource);
- return expandItem;
- }
-
- public static ExpandOption mockExpandOption(final List<ExpandItem> expandItems) {
- ExpandOption expand = Mockito.mock(ExpandOption.class);
- Mockito.when(expand.getExpandItems()).thenReturn(expandItems);
- return expand;
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/588ae2a7/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java
index 96f8817..f622cd1 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java
@@ -32,7 +32,7 @@ import org.apache.olingo.server.api.uri.queryoption.ExpandItem;
import org.apache.olingo.server.api.uri.queryoption.ExpandOption;
import org.apache.olingo.server.api.uri.queryoption.SelectItem;
import org.apache.olingo.server.api.uri.queryoption.SelectOption;
-import org.apache.olingo.server.core.serializer.json.ODataJsonSerializerTest;
+import org.apache.olingo.server.core.serializer.ExpandSelectMock;
import org.apache.olingo.server.tecsvc.provider.EdmTechProvider;
import org.junit.Test;
import org.mockito.Mockito;
@@ -46,9 +46,9 @@ public class ContextURLHelperTest {
@Test
public void buildSelect() throws Exception {
final EdmEntitySet entitySet = entityContainer.getEntitySet("ESAllPrim");
- final SelectItem selectItem1 = ODataJsonSerializerTest.mockSelectItem(entitySet, "PropertyString");
- final SelectItem selectItem2 = ODataJsonSerializerTest.mockSelectItem(entitySet, "PropertyInt16");
- final SelectOption select = ODataJsonSerializerTest.mockSelectOption(Arrays.asList(
+ final SelectItem selectItem1 = ExpandSelectMock.mockSelectItem(entitySet, "PropertyString");
+ final SelectItem selectItem2 = ExpandSelectMock.mockSelectItem(entitySet, "PropertyInt16");
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
selectItem1, selectItem2, selectItem2));
final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
.selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), null, select)).build();
@@ -59,10 +59,10 @@ public class ContextURLHelperTest {
@Test
public void buildSelectAll() throws Exception {
final EdmEntitySet entitySet = entityContainer.getEntitySet("ESAllPrim");
- final SelectItem selectItem1 = ODataJsonSerializerTest.mockSelectItem(entitySet, "PropertyGuid");
+ final SelectItem selectItem1 = ExpandSelectMock.mockSelectItem(entitySet, "PropertyGuid");
SelectItem selectItem2 = Mockito.mock(SelectItem.class);
Mockito.when(selectItem2.isStar()).thenReturn(true);
- final SelectOption select = ODataJsonSerializerTest.mockSelectOption(Arrays.asList(selectItem1, selectItem2));
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(selectItem1, selectItem2));
final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
.selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), null, select)).build();
assertEquals("$metadata#ESAllPrim(*)", ContextURLBuilder.create(contextURL).toASCIIString());
@@ -71,14 +71,14 @@ public class ContextURLHelperTest {
@Test
public void buildSelectComplex() throws Exception {
final EdmEntitySet entitySet = entityContainer.getEntitySet("ESCompMixPrimCollComp");
- final SelectOption select = ODataJsonSerializerTest.mockSelectOption(Arrays.asList(
- ODataJsonSerializerTest.mockSelectItem(entitySet,
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ ExpandSelectMock.mockSelectItem(entitySet,
"PropertyMixedPrimCollComp", "PropertyComp", "PropertyString"),
- ODataJsonSerializerTest.mockSelectItem(entitySet,
+ ExpandSelectMock.mockSelectItem(entitySet,
"PropertyMixedPrimCollComp", "PropertyComp", "PropertyInt16"),
- ODataJsonSerializerTest.mockSelectItem(entitySet, "PropertyMixedPrimCollComp", "CollPropertyString"),
- ODataJsonSerializerTest.mockSelectItem(entitySet, "PropertyMixedPrimCollComp", "CollPropertyComp"),
- ODataJsonSerializerTest.mockSelectItem(entitySet, "PropertyInt16")));
+ ExpandSelectMock.mockSelectItem(entitySet, "PropertyMixedPrimCollComp", "CollPropertyString"),
+ ExpandSelectMock.mockSelectItem(entitySet, "PropertyMixedPrimCollComp", "CollPropertyComp"),
+ ExpandSelectMock.mockSelectItem(entitySet, "PropertyInt16")));
final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
.selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), null, select)).build();
assertEquals("$metadata#ESCompMixPrimCollComp("
@@ -95,7 +95,7 @@ public class ContextURLHelperTest {
final EdmEntitySet entitySet = entityContainer.getEntitySet("ESTwoPrim");
ExpandItem expandItem = Mockito.mock(ExpandItem.class);
Mockito.when(expandItem.isStar()).thenReturn(true);
- final ExpandOption expand = ODataJsonSerializerTest.mockExpandOption(Arrays.asList(expandItem));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItem));
final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
.selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), expand, null)).build();
assertEquals("$metadata#ESTwoPrim", ContextURLBuilder.create(contextURL).toASCIIString());
@@ -104,8 +104,8 @@ public class ContextURLHelperTest {
@Test
public void buildExpandNoSelect() throws Exception {
final EdmEntitySet entitySet = entityContainer.getEntitySet("ESTwoPrim");
- final ExpandOption expand = ODataJsonSerializerTest.mockExpandOption(Arrays.asList(
- ODataJsonSerializerTest.mockExpandItem(entitySet, "NavPropertyETAllPrimOne")));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(
+ ExpandSelectMock.mockExpandItem(entitySet, "NavPropertyETAllPrimOne")));
final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
.selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), expand, null)).build();
assertEquals("$metadata#ESTwoPrim", ContextURLBuilder.create(contextURL).toASCIIString());
@@ -114,16 +114,16 @@ public class ContextURLHelperTest {
@Test
public void buildExpandSelect() throws Exception {
final EdmEntitySet entitySet = entityContainer.getEntitySet("ESTwoPrim");
- final ExpandItem expandItem1 = ODataJsonSerializerTest.mockExpandItem(entitySet, "NavPropertyETAllPrimOne");
+ final ExpandItem expandItem1 = ExpandSelectMock.mockExpandItem(entitySet, "NavPropertyETAllPrimOne");
final EdmEntitySet innerEntitySet = entityContainer.getEntitySet("ESAllPrim");
- ExpandItem expandItem2 = ODataJsonSerializerTest.mockExpandItem(entitySet, "NavPropertyETAllPrimMany");
- final SelectOption innerSelect = ODataJsonSerializerTest.mockSelectOption(Arrays.asList(
- ODataJsonSerializerTest.mockSelectItem(innerEntitySet, "PropertyInt32")));
+ ExpandItem expandItem2 = ExpandSelectMock.mockExpandItem(entitySet, "NavPropertyETAllPrimMany");
+ final SelectOption innerSelect = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ ExpandSelectMock.mockSelectItem(innerEntitySet, "PropertyInt32")));
Mockito.when(expandItem2.getSelectOption()).thenReturn(innerSelect);
- final ExpandOption expand = ODataJsonSerializerTest.mockExpandOption(Arrays.asList(
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(
expandItem1, expandItem2));
- final SelectItem selectItem = ODataJsonSerializerTest.mockSelectItem(entitySet, "PropertyString");
- final SelectOption select = ODataJsonSerializerTest.mockSelectOption(Arrays.asList(selectItem));
+ final SelectItem selectItem = ExpandSelectMock.mockSelectItem(entitySet, "PropertyString");
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(selectItem));
final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
.selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), expand, select)).build();
assertEquals("$metadata#ESTwoPrim(PropertyString,NavPropertyETAllPrimMany(PropertyInt32))",
@@ -131,18 +131,46 @@ public class ContextURLHelperTest {
}
@Test
+ public void buildExpandTwoLevels() throws Exception {
+ final EdmEntitySet entitySet = entityContainer.getEntitySet("ESTwoPrim");
+ final EdmEntitySet innerEntitySet = entityContainer.getEntitySet("ESAllPrim");
+ final ExpandOption innerExpand = ExpandSelectMock.mockExpandOption(Arrays.asList(
+ ExpandSelectMock.mockExpandItem(innerEntitySet, "NavPropertyETTwoPrimOne")));
+ ExpandItem expandItem = ExpandSelectMock.mockExpandItem(entitySet, "NavPropertyETAllPrimOne");
+ Mockito.when(expandItem.getExpandOption()).thenReturn(innerExpand);
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItem));
+ final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
+ .selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), expand, null)).build();
+ assertEquals("$metadata#ESTwoPrim", ContextURLBuilder.create(contextURL).toASCIIString());
+ }
+
+ @Test
+ public void buildExpandTwoLevelsInnerAll() throws Exception {
+ final EdmEntitySet entitySet = entityContainer.getEntitySet("ESTwoPrim");
+ ExpandItem expandItemInner = Mockito.mock(ExpandItem.class);
+ Mockito.when(expandItemInner.isStar()).thenReturn(true);
+ final ExpandOption innerExpand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItemInner));
+ ExpandItem expandItem = ExpandSelectMock.mockExpandItem(entitySet, "NavPropertyETAllPrimOne");
+ Mockito.when(expandItem.getExpandOption()).thenReturn(innerExpand);
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItem));
+ final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
+ .selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), expand, null)).build();
+ assertEquals("$metadata#ESTwoPrim", ContextURLBuilder.create(contextURL).toASCIIString());
+ }
+
+ @Test
public void buildExpandSelectTwoLevels() throws Exception {
final EdmEntitySet entitySet = entityContainer.getEntitySet("ESTwoPrim");
final EdmEntitySet innerEntitySet = entityContainer.getEntitySet("ESAllPrim");
- ExpandItem expandItemInner = ODataJsonSerializerTest.mockExpandItem(innerEntitySet, "NavPropertyETTwoPrimOne");
+ ExpandItem expandItemInner = ExpandSelectMock.mockExpandItem(innerEntitySet, "NavPropertyETTwoPrimOne");
SelectItem innerSelectItem = Mockito.mock(SelectItem.class);
Mockito.when(innerSelectItem.isStar()).thenReturn(true);
- final SelectOption innerSelect = ODataJsonSerializerTest.mockSelectOption(Arrays.asList(innerSelectItem));
+ final SelectOption innerSelect = ExpandSelectMock.mockSelectOption(Arrays.asList(innerSelectItem));
Mockito.when(expandItemInner.getSelectOption()).thenReturn(innerSelect);
- final ExpandOption innerExpand = ODataJsonSerializerTest.mockExpandOption(Arrays.asList(expandItemInner));
- ExpandItem expandItem = ODataJsonSerializerTest.mockExpandItem(entitySet, "NavPropertyETAllPrimOne");
+ final ExpandOption innerExpand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItemInner));
+ ExpandItem expandItem = ExpandSelectMock.mockExpandItem(entitySet, "NavPropertyETAllPrimOne");
Mockito.when(expandItem.getExpandOption()).thenReturn(innerExpand);
- final ExpandOption expand = ODataJsonSerializerTest.mockExpandOption(Arrays.asList(expandItem));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItem));
final ContextURL contextURL = ContextURL.with().entitySet(entitySet)
.selectList(ContextURLHelper.buildSelectList(entitySet.getEntityType(), expand, null)).build();
assertEquals("$metadata#ESTwoPrim(NavPropertyETAllPrimOne(NavPropertyETTwoPrimOne(*)))",