You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/10/09 14:50:45 UTC
[2/4] olingo-odata4 git commit: [OLINGO-795] server support for Enums
and Type Definitions
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEnumTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEnumTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEnumTest.java
deleted file mode 100644
index 25dcb03..0000000
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEnumTest.java
+++ /dev/null
@@ -1,372 +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.server.core.edm.provider;
-
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmEnumType;
-import org.apache.olingo.commons.api.edm.EdmException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.commons.api.edm.provider.CsdlEnumMember;
-import org.apache.olingo.commons.api.edm.provider.CsdlEnumType;
-import org.apache.olingo.commons.core.edm.EdmEnumTypeImpl;
-import org.apache.olingo.commons.core.edm.EdmProviderImpl;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-public class EdmEnumTest {
-
- private final EdmEnumType instance;
- private final EdmEnumType otherInstance;
- private final EdmEnumType nonFlagsInstance;
- private final EdmEnumType int16EnumType;
- private final EdmEnumType int32EnumType;
- private final EdmEnumType int32FlagType;
-
- public EdmEnumTest() {
- final List<CsdlEnumMember> memberList = Arrays.asList(
- new CsdlEnumMember().setName("first").setValue("1"),
- new CsdlEnumMember().setName("second").setValue("64"));
-
- final FullQualifiedName enumName = new FullQualifiedName("namespace", "name");
-
- instance = new EdmEnumTypeImpl(mock(EdmProviderImpl.class), enumName,
- new CsdlEnumType().setName("name").setMembers(memberList).setFlags(true)
- .setUnderlyingType(EdmPrimitiveTypeKind.SByte.getFullQualifiedName()));
-
- otherInstance = new EdmEnumTypeImpl(mock(EdmProviderImpl.class), enumName,
- new CsdlEnumType().setName("name").setMembers(memberList).setFlags(true)
- .setUnderlyingType(EdmPrimitiveTypeKind.SByte.getFullQualifiedName()));
-
- nonFlagsInstance = new EdmEnumTypeImpl(mock(EdmProviderImpl.class), enumName,
- new CsdlEnumType().setName("name").setMembers(memberList).setFlags(false)
- .setUnderlyingType(EdmPrimitiveTypeKind.SByte.getFullQualifiedName()));
-
- int16EnumType = new EdmEnumTypeImpl(Mockito.mock(Edm.class),
- new FullQualifiedName("testNamespace", "testName"), new CsdlEnumType()
- .setName("MyEnum")
- .setFlags(false)
- .setUnderlyingType(EdmPrimitiveTypeKind.Int16.getFullQualifiedName())
- .setMembers(
- Arrays.asList(
- new CsdlEnumMember().setName("A")
- .setValue("0"),
- new CsdlEnumMember().setName("B")
- .setValue("1"),
- new CsdlEnumMember().setName("C")
- .setValue("2"))));
-
- int32EnumType =
- new EdmEnumTypeImpl(Mockito.mock(Edm.class),
- new FullQualifiedName("testNamespace", "testName"), new CsdlEnumType()
- .setName("MyEnum")
- .setFlags(false)
- .setUnderlyingType(EdmPrimitiveTypeKind.Int32.getFullQualifiedName())
- .setMembers(
- Arrays
- .asList(new CsdlEnumMember().setName("A").setValue("0"), new CsdlEnumMember().setName("B")
- .setValue("1"),
- new CsdlEnumMember().setName("C").setValue("2"))));
-
- int32FlagType =
- new EdmEnumTypeImpl(Mockito.mock(Edm.class),
- new FullQualifiedName("testNamespace", "testName"), new CsdlEnumType()
- .setName("MyEnum")
- .setFlags(true)
- .setUnderlyingType(EdmPrimitiveTypeKind.Int32.getFullQualifiedName())
- .setMembers(
- Arrays
- .asList(new CsdlEnumMember().setName("A").setValue("2"), new CsdlEnumMember().setName("B")
- .setValue("4"),
- new CsdlEnumMember().setName("C").setValue("8"))));
- }
-
- @Test
- public void nameSpace() throws Exception {
- assertEquals("namespace", instance.getNamespace());
- }
-
- @Test
- public void name() throws Exception {
- assertEquals("name", instance.getName());
- }
-
- @Test
- public void kind() throws Exception {
- assertEquals(EdmTypeKind.ENUM, instance.getKind());
- }
-
- @Test
- public void compatibility() {
- assertTrue(instance.isCompatible(instance));
- assertTrue(instance.isCompatible(otherInstance));
- assertFalse(instance.isCompatible(instance.getUnderlyingType()));
- }
-
- @Test
- public void defaultType() throws Exception {
- assertEquals(Byte.class, instance.getDefaultType());
- EdmEnumType instance = new EdmEnumTypeImpl(Mockito.mock(Edm.class),
- new FullQualifiedName("testNamespace", "testName"),
- new CsdlEnumType()
- .setName("MyEnum"));
- assertEquals(Integer.class, instance.getUnderlyingType().getDefaultType());
- }
-
- @Test
- public void members() throws Exception {
- assertArrayEquals(new String[] { "first", "second" }, instance.getMemberNames().toArray());
- assertEquals("64", instance.getMember("second").getValue());
- assertNull(instance.getMember("notExisting"));
- }
-
- @Test
- public void underlyingType() throws Exception {
- assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.SByte), instance.getUnderlyingType());
- }
-
- @Test
- public void validate() throws Exception {
- assertTrue(instance.validate(null, null, null, null, null, null));
- assertTrue(instance.validate(null, true, null, null, null, null));
- assertFalse(instance.validate(null, false, null, null, null, null));
- assertFalse(instance.validate("", null, null, null, null, null));
- assertFalse(instance.validate("something", null, null, null, null, null));
-
- assertTrue(instance.validate("second", null, null, null, null, null));
- assertTrue(instance.validate("first,second", null, null, null, null, null));
- assertTrue(instance.validate("64", null, null, null, null, null));
- assertTrue(instance.validate("1,64", null, null, null, null, null));
- }
-
- @Test
- public void toUriLiteral() throws Exception {
- assertNull(instance.toUriLiteral(null));
- assertEquals("namespace.name'first'", instance.toUriLiteral("first"));
- }
-
- @Test
- public void fromUriLiteral() throws Exception {
- assertNull(instance.fromUriLiteral(null));
- assertEquals("first", instance.fromUriLiteral("namespace.name'first'"));
-
- expectErrorInFromUriLiteral(instance, "");
- expectErrorInFromUriLiteral(instance, "name'first'");
- expectErrorInFromUriLiteral(instance, "namespace.name'first");
- expectErrorInFromUriLiteral(instance, "namespace.namespace'first");
- }
-
- @Test
- public void valueToString() throws Exception {
- assertNull(instance.valueToString(null, null, null, null, null, null));
- assertNull(instance.valueToString(null, true, null, null, null, null));
- assertEquals("first", instance.valueToString(1, null, null, null, null, null));
- assertEquals("first", instance.valueToString((byte) 1, null, null, null, null, null));
- assertEquals("first", instance.valueToString((short) 1, null, null, null, null, null));
- assertEquals("second", instance.valueToString(Integer.valueOf(64), null, null, null, null, null));
- assertEquals("second", instance.valueToString(64L, null, null, null, null, null));
- assertEquals("first,second", instance.valueToString(65, null, null, null, null, null));
-
- expectNullErrorInValueToString(instance);
- expectContentErrorInValueToString(instance, 3);
- expectTypeErrorInValueToString(instance, 1.0);
-
- assertEquals("A", int32EnumType.valueToString(0, false, 0, 0, 0, false));
- assertEquals("B", int32EnumType.valueToString(1, false, 0, 0, 0, false));
- assertEquals("C", int32EnumType.valueToString(2, false, 0, 0, 0, false));
-
- assertEquals("A", int16EnumType.valueToString(0, false, 0, 0, 0, false));
- assertEquals("B", int16EnumType.valueToString(1, false, 0, 0, 0, false));
- assertEquals("C", int16EnumType.valueToString(2, false, 0, 0, 0, false));
-
- assertEquals("A", int32FlagType.valueToString(2, false, 0, 0, 0, false));
- assertEquals("B", int32FlagType.valueToString(4, false, 0, 0, 0, false));
- assertEquals("C", int32FlagType.valueToString(8, false, 0, 0, 0, false));
- assertEquals("A,B", int32FlagType.valueToString(0x2 + 0x4, false, 0, 0, 0, false));
- assertEquals("B,C", int32FlagType.valueToString(0x4 + 0x8, false, 0, 0, 0, false));
- }
-
- @Test
- public void valueOfString() throws Exception {
- assertNull(instance.valueOfString(null, null, null, null, null, null, Byte.class));
- assertNull(instance.valueOfString(null, true, null, null, null, null, Byte.class));
- assertEquals(Short.valueOf((short) 1), instance.valueOfString("1", null, null, null, null, null, Short.class));
- assertEquals(Integer.valueOf(1), instance.valueOfString("1", null, null, null, null, null, Integer.class));
- assertEquals(Long.valueOf(64L), instance.valueOfString("64", null, null, null, null, null, Long.class));
- assertEquals(Long.valueOf(1), instance.valueOfString("first", null, null, null, null, null, Long.class));
- assertEquals(Byte.valueOf((byte) 65), instance.valueOfString("first,64", null, null, null, null, null, Byte.class));
- assertEquals(Integer.valueOf(1), instance.valueOfString("1,1,first", null, null, null, null, null, Integer.class));
-
- assertEquals(Integer.valueOf(1), nonFlagsInstance.valueOfString("1", null, null, null, null, null, Integer.class));
- expectContentErrorInValueOfString(nonFlagsInstance, "1,64");
-
- expectNullErrorInValueOfString(instance);
- expectContentErrorInValueOfString(instance, "2");
- expectContentErrorInValueOfString(instance, "1,");
- expectContentErrorInValueOfString(instance, ",1");
- expectTypeErrorInValueOfString(instance, "1");
-
- assertEquals(Integer.valueOf(0), int32EnumType.valueOfString("A", null, null, null, null, null, Integer.class));
- assertEquals(Integer.valueOf(1), int32EnumType.valueOfString("B", null, null, null, null, null, Integer.class));
- assertEquals(Integer.valueOf(2), int32EnumType.valueOfString("C", null, null, null, null, null, Integer.class));
-
- assertEquals(Integer.valueOf(0), int16EnumType.valueOfString("A", null, null, null, null, null, Integer.class));
- assertEquals(Integer.valueOf(1), int16EnumType.valueOfString("B", null, null, null, null, null, Integer.class));
- assertEquals(Integer.valueOf(2), int16EnumType.valueOfString("C", null, null, null, null, null, Integer.class));
-
- assertEquals(Integer.valueOf(2), int32FlagType.valueOfString("A", null, null, null, null, null, Integer.class));
- assertEquals(Integer.valueOf(4), int32FlagType.valueOfString("B", null, null, null, null, null, Integer.class));
- assertEquals(Integer.valueOf(8), int32FlagType.valueOfString("C", null, null, null, null, null, Integer.class));
- assertEquals(Integer.valueOf(0x2 + 0x4), int32FlagType.valueOfString("A,B", null, null, null, null, null,
- Integer.class));
- assertEquals(Integer.valueOf(0x4 + 0x8), int32FlagType.valueOfString("B,C", null, null, null, null, null,
- Integer.class));
- assertEquals(Integer.valueOf(0x2 + 0x4), int32FlagType.valueOfString("B,A", null, null, null, null, null,
- Integer.class));
- }
-
- private void expectErrorInValueToString(final EdmEnumType instance,
- final Object value, final Boolean isNullable, final Integer maxLength,
- final Integer precision, final Integer scale, final Boolean isUnicode,
- final String message) {
- try {
- instance.valueToString(value, isNullable, maxLength, precision, scale, isUnicode);
- fail("Expected exception not thrown");
- } catch (final EdmPrimitiveTypeException e) {
- assertNotNull(e.getLocalizedMessage());
- assertThat(e.getLocalizedMessage(), containsString(message));
- }
- }
-
- private void expectErrorInUnderlyingType(
- final EdmPrimitiveTypeKind underlyingType,
- final String message) {
- try {
- new EdmEnumTypeImpl(Mockito.mock(Edm.class),
- new FullQualifiedName("testNamespace", "testName"),
- new CsdlEnumType()
- .setName("MyEnum")
- .setFlags(false)
- .setUnderlyingType(underlyingType.getFullQualifiedName())
- .setMembers(
- Arrays.asList(
- new CsdlEnumMember().setName("A")
- .setValue("0"))));
- fail("Expected exception not thrown");
- } catch (final EdmException e) {
- assertNotNull(e.getLocalizedMessage());
- assertThat(e.getLocalizedMessage(), containsString(message));
- }
- }
-
- @Test
- public void unsupportedUnderlyingType() throws Exception {
- // Test some random unsupported types
- expectErrorInUnderlyingType(EdmPrimitiveTypeKind.Date, "");
- expectErrorInUnderlyingType(EdmPrimitiveTypeKind.Geography, "");
- expectErrorInUnderlyingType(EdmPrimitiveTypeKind.Guid, "");
- }
-
- @Test
- public void outOfRangeValueToString() throws Exception {
- expectErrorInValueToString(int16EnumType, Integer.MAX_VALUE, null, null, null, null, null, "");
- }
-
- protected void expectErrorInFromUriLiteral(final EdmPrimitiveType instance, final String value) {
- try {
- instance.fromUriLiteral(value);
- fail("Expected exception not thrown");
- } catch (final EdmPrimitiveTypeException e) {
- assertNotNull(e.getLocalizedMessage());
- assertThat(e.getLocalizedMessage(), containsString("' has illegal content."));
- }
- }
-
- private void expectErrorInValueToString(final EdmPrimitiveType instance,
- final Object value, final Boolean isNullable, final Integer maxLength,
- final Integer precision, final Integer scale, final Boolean isUnicode,
- final String message) {
- try {
- instance.valueToString(value, isNullable, maxLength, precision, scale, isUnicode);
- fail("Expected exception not thrown");
- } catch (final EdmPrimitiveTypeException e) {
- assertNotNull(e.getLocalizedMessage());
- assertThat(e.getLocalizedMessage(), containsString(message));
- }
- }
-
- protected void expectNullErrorInValueToString(final EdmPrimitiveType instance) {
- expectErrorInValueToString(instance, null, false, null, null, null, null, "The value NULL is not allowed.");
- }
-
- protected void expectTypeErrorInValueToString(final EdmPrimitiveType instance, final Object value) {
- expectErrorInValueToString(instance, value, null, null, null, null, null, "value type");
- }
-
- protected void expectContentErrorInValueToString(final EdmPrimitiveType instance, final Object value) {
- expectErrorInValueToString(instance, value, null, null, null, null, null, "' is not valid.");
- }
-
- private void expectErrorInValueOfString(final EdmPrimitiveType instance,
- final String value, final Boolean isNullable, final Integer maxLength, final Integer precision,
- final Integer scale, final Boolean isUnicode, final Class<?> returnType,
- final String message) {
-
- try {
- instance.valueOfString(value, isNullable, maxLength, precision, scale, isUnicode, returnType);
- fail("Expected exception not thrown");
- } catch (final EdmPrimitiveTypeException e) {
- assertNotNull(e.getLocalizedMessage());
- assertThat(e.getLocalizedMessage(), containsString(message));
- }
- }
-
- protected void expectTypeErrorInValueOfString(final EdmPrimitiveType instance, final String value) {
- expectErrorInValueOfString(instance, value, null, null, null, null, null, Class.class,
- "The value type class java.lang.Class is not supported.");
- }
-
- protected void expectContentErrorInValueOfString(final EdmPrimitiveType instance, final String value) {
- expectErrorInValueOfString(instance, value, null, null, null, null, null, instance.getDefaultType(),
- "illegal content");
- }
-
- protected void expectNullErrorInValueOfString(final EdmPrimitiveType instance) {
- expectErrorInValueOfString(instance, null, false, null, null, null, null, instance.getDefaultType(),
- "The literal 'null' is not allowed.");
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java
deleted file mode 100644
index 63d21f5..0000000
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeDefinitionImplTest.java
+++ /dev/null
@@ -1,77 +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.server.core.edm.provider;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-
-import org.apache.olingo.commons.api.edm.EdmException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition;
-import org.apache.olingo.commons.core.edm.EdmProviderImpl;
-import org.apache.olingo.commons.core.edm.EdmTypeDefinitionImpl;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
-import org.junit.Test;
-
-public class EdmTypeDefinitionImplTest {
-
- @Test
- public void typeDefOnStringNoFacets() throws Exception {
- final FullQualifiedName typeDefName = new FullQualifiedName("namespace", "name");
- final CsdlTypeDefinition providerTypeDef =
- new CsdlTypeDefinition().setName("typeDef").setUnderlyingType(new FullQualifiedName("Edm", "String"));
- final EdmTypeDefinition typeDefImpl =
- new EdmTypeDefinitionImpl(mock(EdmProviderImpl.class), typeDefName, providerTypeDef);
-
- assertEquals("name", typeDefImpl.getName());
- assertEquals("namespace", typeDefImpl.getNamespace());
- assertEquals(String.class, typeDefImpl.getDefaultType());
- assertEquals(EdmTypeKind.DEFINITION, typeDefImpl.getKind());
- assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String), typeDefImpl.getUnderlyingType());
- assertTrue(typeDefImpl.isCompatible(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String)));
-
- // String validation
- assertEquals("'StringValue'", typeDefImpl.toUriLiteral("StringValue"));
- assertEquals("String''Value", typeDefImpl.fromUriLiteral("'String''''Value'"));
- assertTrue(typeDefImpl.validate("text", null, null, null, null, null));
- assertEquals("text", typeDefImpl.valueToString("text", null, null, null, null, null));
- assertEquals("text", typeDefImpl.valueOfString("text", null, null, null, null, null, String.class));
-
- // Facets must be initial
- assertNull(typeDefImpl.getMaxLength());
- assertNull(typeDefImpl.getPrecision());
- assertNull(typeDefImpl.getScale());
- assertTrue(typeDefImpl.isUnicode());
- }
-
- @Test(expected = EdmException.class)
- public void invalidTypeResultsInEdmException() throws Exception {
- FullQualifiedName typeDefName = new FullQualifiedName("namespace", "name");
- CsdlTypeDefinition providerTypeDef =
- new CsdlTypeDefinition().setName("typeDef").setUnderlyingType(new FullQualifiedName("wrong", "wrong"));
- EdmTypeDefinitionImpl def = new EdmTypeDefinitionImpl(mock(EdmProviderImpl.class), typeDefName, providerTypeDef);
- def.getUnderlyingType();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
index 04bf11d..1fdb256 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
@@ -23,7 +23,6 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.InputStream;
-import java.util.ArrayList;
import java.util.Collections;
import org.apache.commons.io.IOUtils;
@@ -43,7 +42,6 @@ import org.apache.olingo.server.api.serializer.SerializerException;
import org.apache.olingo.server.core.ServiceMetadataImpl;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.mockito.Mockito;
public class ServiceDocumentXmlSerializerTest {
private static ODataSerializer serializer;
@@ -52,16 +50,16 @@ public class ServiceDocumentXmlSerializerTest {
public static void init() throws SerializerException {
serializer = OData.newInstance().createSerializer(ContentType.APPLICATION_ATOM_XML);
}
-
+
@Test
public void writeServiceWithEmptyMockedEdm() throws Exception {
final Edm edm = mock(Edm.class);
EdmEntityContainer container = mock(EdmEntityContainer.class);
- Mockito.stub(container.getFullQualifiedName()).toReturn(new FullQualifiedName("service.test"));
- when(container.getEntitySets()).thenReturn(new ArrayList<EdmEntitySet>());
- when(container.getFunctionImports()).thenReturn(new ArrayList<EdmFunctionImport>());
- when(container.getSingletons()).thenReturn(new ArrayList<EdmSingleton>());
- when(edm.getEntityContainer(null)).thenReturn(container);
+ when(container.getFullQualifiedName()).thenReturn(new FullQualifiedName("service", "test"));
+ when(container.getEntitySets()).thenReturn(Collections.<EdmEntitySet> emptyList());
+ when(container.getFunctionImports()).thenReturn(Collections.<EdmFunctionImport> emptyList());
+ when(container.getSingletons()).thenReturn(Collections.<EdmSingleton> emptyList());
+ when(edm.getEntityContainer()).thenReturn(container);
ServiceMetadata metadata = mock(ServiceMetadata.class);
when(metadata.getEdm()).thenReturn(edm);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java
index 01af921..ccc7de5 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java
@@ -1138,7 +1138,11 @@ public class DataCreator {
}
protected static Property createPrimitiveCollection(final String name, final Object... values) {
- return new Property(null, name, ValueType.COLLECTION_PRIMITIVE, Arrays.asList(values));
+ List<Object> propertyValues = new ArrayList<Object>();
+ for (final Object value : values) {
+ propertyValues.add(value);
+ }
+ return new Property(null, name, ValueType.COLLECTION_PRIMITIVE, propertyValues);
}
protected static Property createComplex(final String name, final Property... properties) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
index f9e2ee2..a4f63f1 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
@@ -48,6 +48,7 @@ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmProperty;
import org.apache.olingo.commons.api.edm.EdmStructuredType;
+import org.apache.olingo.commons.api.edm.EdmType;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.http.HttpStatusCode;
@@ -235,9 +236,10 @@ public class DataProvider {
private Property createProperty(final EdmProperty edmProperty, final String propertyName)
throws DataProviderException {
+ final EdmType type = edmProperty.getType();
Property newProperty;
-
- if (edmProperty.isPrimitive()) {
+ if (edmProperty.isPrimitive()
+ || type.getKind() == EdmTypeKind.ENUM || type.getKind() == EdmTypeKind.DEFINITION) {
newProperty = edmProperty.isCollection() ?
DataCreator.createPrimitiveCollection(propertyName) :
DataCreator.createPrimitive(propertyName, null);
@@ -248,10 +250,9 @@ public class DataProvider {
newProperty = newProperty2;
} else {
newProperty = DataCreator.createComplex(propertyName);
- createProperties((EdmComplexType) edmProperty.getType(), newProperty.asComplex().getValue());
+ createProperties((EdmComplexType) type, newProperty.asComplex().getValue());
}
}
-
return newProperty;
}
@@ -414,40 +415,36 @@ public class DataProvider {
@SuppressWarnings("unchecked")
public void updateProperty(final EdmProperty edmProperty, Property property, final Property newProperty,
final boolean patch) throws DataProviderException {
- if (edmProperty.isPrimitive()) {
- if (newProperty != null || !patch) {
- final Object value = newProperty == null ? null : newProperty.getValue();
- updatePropertyValue(property, value);
- }
- } else if (edmProperty.isCollection()) {
+ final EdmType type = edmProperty.getType();
+ if (edmProperty.isCollection()) {
// Updating collection properties means replacing all entries with the given ones.
property.asCollection().clear();
if (newProperty != null) {
- if (edmProperty.getType().getKind() == EdmTypeKind.COMPLEX) {
- // Complex type
- final List<ComplexValue> complexValues = (List<ComplexValue>) newProperty.asCollection();
-
- // Create each complex value
- for (final ComplexValue complexValue : complexValues) {
+ if (type.getKind() == EdmTypeKind.COMPLEX) {
+ // Create each complex value.
+ for (final ComplexValue complexValue : (List<ComplexValue>) newProperty.asCollection()) {
((List<ComplexValue>) property.asCollection()).add(createComplexValue(edmProperty, complexValue, patch));
}
} else {
// Primitive type
- final List<Object> values = (List<Object>) newProperty.asCollection();
- ((List<Object>) property.asCollection()).addAll(values);
+ ((List<Object>) property.asCollection()).addAll(newProperty.asCollection());
}
}
- } else {
- final EdmComplexType type = (EdmComplexType) edmProperty.getType();
- for (final String propertyName : type.getPropertyNames()) {
+ } else if (type.getKind() == EdmTypeKind.COMPLEX) {
+ for (final String propertyName : ((EdmComplexType) type).getPropertyNames()) {
final List<Property> newProperties = newProperty == null || newProperty.asComplex() == null ? null :
newProperty.asComplex().getValue();
- updateProperty(type.getStructuralProperty(propertyName),
+ updateProperty(((EdmComplexType) type).getStructuralProperty(propertyName),
findProperty(propertyName, property.asComplex().getValue()),
newProperties == null ? null : findProperty(propertyName, newProperties),
patch);
}
+ } else {
+ if (newProperty != null || !patch) {
+ final Object value = newProperty == null ? null : newProperty.getValue();
+ updatePropertyValue(property, value);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java
index 690e1d3..c8c4549 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java
@@ -777,12 +777,10 @@ public class PropertyProvider {
// TypeDefinition Properties ---------------------------------------------------------------------------------------
public static final CsdlProperty propertyTypeDefinition_TDString = new CsdlProperty()
.setName("PropertyDefString")
- .setType(TypeDefinitionProvider.nameTDString)
- .setMaxLength(15);
+ .setType(TypeDefinitionProvider.nameTDString);
public static final CsdlProperty collPropertyTypeDefinition_TDString = new CsdlProperty()
.setName("CollPropertyDefString")
.setType(TypeDefinitionProvider.nameTDString)
- .setMaxLength(15)
.setCollection(true);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TypeDefinitionProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TypeDefinitionProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TypeDefinitionProvider.java
index 3a357a2..1c2be72 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TypeDefinitionProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TypeDefinitionProvider.java
@@ -28,10 +28,10 @@ public class TypeDefinitionProvider {
public CsdlTypeDefinition getTypeDefinition(final FullQualifiedName typeDefinitionName) {
if (nameTDString.equals(typeDefinitionName)) {
- return new CsdlTypeDefinition().setName(nameTDString.getName()).setUnderlyingType(
- EdmPrimitiveTypeKind.String.getFullQualifiedName()).setMaxLength(15);
+ return new CsdlTypeDefinition().setName(nameTDString.getName())
+ .setUnderlyingType(EdmPrimitiveTypeKind.String.getFullQualifiedName())
+ .setMaxLength(15);
}
return null;
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java
index f3899d1..fbaf085 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java
@@ -466,6 +466,10 @@ public class ODataJsonDeserializerEntityTest extends AbstractODataDeserializerTe
Property complexProperty = entity.getProperty("PropertyCompMixedEnumDef");
List<Property> value = complexProperty.asComplex().getValue();
assertEquals((short) 2, value.get(0).getValue());
+
+ defProperty = ((ComplexValue) entity.getProperty("CollPropertyCompMixedEnumDef").asCollection().get(1))
+ .getValue().get(2);
+ assertEquals("string", defProperty.getValue());
stream.close();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java
index 71f4d35..8b9431b 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java
@@ -25,21 +25,15 @@ import java.util.Arrays;
import java.util.List;
import java.util.UUID;
+import org.apache.olingo.commons.api.Constants;
import org.apache.olingo.commons.api.data.ComplexValue;
import org.apache.olingo.commons.api.data.Entity;
import org.apache.olingo.commons.api.data.Link;
import org.apache.olingo.commons.api.data.Property;
-import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmProperty;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.provider.CsdlComplexType;
-import org.apache.olingo.commons.api.edm.provider.CsdlProperty;
-import org.apache.olingo.commons.core.edm.EdmComplexTypeImpl;
-import org.apache.olingo.commons.core.edm.EdmPropertyImpl;
import org.apache.olingo.commons.core.edm.primitivetype.EdmBinary;
import org.apache.olingo.commons.core.edm.primitivetype.EdmDate;
import org.apache.olingo.commons.core.edm.primitivetype.EdmDateTimeOffset;
@@ -50,7 +44,6 @@ import org.custommonkey.xmlunit.XMLUnit;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.mockito.Mockito;
public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
@@ -264,7 +257,7 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
Assert.assertNotNull(result.getProperty("PropertyComp"));
Property comp = result.getProperty("PropertyComp");
Assert.assertEquals("olingo.odata.test1.CTAllPrim", comp.getType());
- ComplexValue cv = (ComplexValue)comp.getValue();
+ ComplexValue cv = comp.asComplex();
Assert.assertEquals(16, cv.getValue().size());
@@ -277,14 +270,14 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
}
private Property getCVProperty(ComplexValue cv, String name) {
- for (Property p:cv.getValue()) {
+ for (Property p : cv.getValue()) {
if (p.getName().equals(name)) {
return p;
}
}
return null;
}
-
+
@Test
public void entityMixPrimCollComp() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixPrimCollComp");
@@ -336,7 +329,7 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
Property comp = result.getProperty("PropertyComp");
Assert.assertEquals("olingo.odata.test1.CTTwoPrim", comp.getType());
- ComplexValue cv = (ComplexValue)comp.getValue();
+ ComplexValue cv = comp.asComplex();
Assert.assertEquals(2, cv.getValue().size());
Assert.assertEquals((short) 111, getCVProperty(cv, "PropertyInt16").asPrimitive());
@@ -344,21 +337,85 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
comp = result.getProperty("CollPropertyComp");
Assert.assertEquals("Collection(olingo.odata.test1.CTTwoPrim)", comp.getType());
- @SuppressWarnings("unchecked")
- List<ComplexValue> properties = (List<ComplexValue>)comp.getValue();
-
+
+ List<?> properties = comp.asCollection();
Assert.assertEquals(3, properties.size());
- Assert.assertEquals((short) 123,
- getCVProperty(properties.get(0), "PropertyInt16").asPrimitive());
- Assert.assertEquals("TEST 1",
- getCVProperty(properties.get(0), "PropertyString").asPrimitive());
+ Assert.assertEquals((short) 123, getCVProperty((ComplexValue) properties.get(0), "PropertyInt16").asPrimitive());
+ Assert.assertEquals("TEST 1", getCVProperty((ComplexValue) properties.get(0), "PropertyString").asPrimitive());
- Assert.assertEquals((short) 789, getCVProperty(properties.get(2), "PropertyInt16").asPrimitive());
- Assert.assertEquals("TEST 3", getCVProperty(properties.get(2), "PropertyString")
- .asPrimitive());
+ Assert.assertEquals((short) 789, getCVProperty((ComplexValue) properties.get(2), "PropertyInt16").asPrimitive());
+ Assert.assertEquals("TEST 3", getCVProperty((ComplexValue) properties.get(2), "PropertyString").asPrimitive());
}
-
+
+ @Test
+ public void entityMixEnumDefCollComp() throws Exception {
+ final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixEnumDefCollComp");
+ final String payload = "<?xml version='1.0' encoding='UTF-8'?>\n"
+ + "<a:entry xmlns:a=\"" + Constants.NS_ATOM + "\""
+ + " xmlns:m=\"" + Constants.NS_METADATA + "\" xmlns:d=\"" + Constants.NS_DATASERVICES + "\">\n"
+ + " <a:content type=\"application/xml\">\n"
+ + " <m:properties>\n"
+ + " <d:PropertyInt16 m:type=\"Int16\">1</d:PropertyInt16>\n"
+ + " <d:PropertyEnumString m:type=\"#olingo.odata.test1.ENString\">String2,String3"
+ + "</d:PropertyEnumString>\n"
+ + " <d:CollPropertyEnumString m:type=\"#Collection(olingo.odata.test1.ENString)\">\n"
+ + " <m:element>String2</m:element>\n"
+ + " <m:element>String3</m:element>\n"
+ + " <m:element>String2,String3</m:element>\n"
+ + " </d:CollPropertyEnumString>\n"
+ + " <d:PropertyDefString m:type=\"#olingo.odata.test1.TDString\">Test</d:PropertyDefString>\n"
+ + " <d:CollPropertyDefString m:type=\"#Collection(olingo.odata.test1.TDString)\">\n"
+ + " <m:element>Test1</m:element>\n"
+ + " <m:element>Test2</m:element>\n"
+ + " </d:CollPropertyDefString>\n"
+ + " <d:PropertyCompMixedEnumDef m:type=\"#olingo.odata.test1.CTMixEnumDef\">\n"
+ + " <d:PropertyEnumString m:type=\"#olingo.odata.test1.ENString\">String2,String3"
+ + "</d:PropertyEnumString>\n"
+ + " <d:CollPropertyEnumString m:type=\"#Collection(olingo.odata.test1.ENString)\">\n"
+ + " <m:element>String2</m:element>\n"
+ + " <m:element>String3</m:element>\n"
+ + " <m:element>String2,String3</m:element>\n"
+ + " </d:CollPropertyEnumString>\n"
+ + " <d:PropertyDefString m:type=\"#olingo.odata.test1.TDString\">Test</d:PropertyDefString>\n"
+ + " <d:CollPropertyDefString m:type=\"#Collection(olingo.odata.test1.TDString)\">\n"
+ + " <m:element>Test1</m:element>\n"
+ + " <m:element>Test2</m:element>\n"
+ + " </d:CollPropertyDefString>\n"
+ + " </d:PropertyCompMixedEnumDef>\n"
+ + " <d:CollPropertyCompMixedEnumDef m:type=\"#Collection(olingo.odata.test1.CTMixEnumDef)\">\n"
+ + " <m:element>\n"
+ + " <d:PropertyEnumString m:type=\"#olingo.odata.test1.ENString\">String2,String3"
+ + "</d:PropertyEnumString>\n"
+ + " <d:CollPropertyEnumString m:type=\"#Collection(olingo.odata.test1.ENString)\">\n"
+ + " <m:element>String2</m:element>\n"
+ + " <m:element>String3</m:element>\n"
+ + " <m:element>String2,String3</m:element>\n"
+ + " </d:CollPropertyEnumString>\n"
+ + " <d:PropertyDefString m:type=\"#olingo.odata.test1.TDString\">Test</d:PropertyDefString>\n"
+ + " <d:CollPropertyDefString m:type=\"#Collection(olingo.odata.test1.TDString)\">\n"
+ + " <m:element>Test1</m:element>\n"
+ + " <m:element>Test2</m:element>\n"
+ + " </d:CollPropertyDefString>\n"
+ + " </m:element>\n"
+ + " </d:CollPropertyCompMixedEnumDef>\n"
+ + " </m:properties>\n"
+ + " </a:content>\n"
+ + "</a:entry>";
+ final Entity result = deserializer.entity(new ByteArrayInputStream(payload.getBytes()),
+ edmEntitySet.getEntityType()).getEntity();
+
+ Assert.assertEquals(7, result.getProperties().size());
+
+ Assert.assertEquals((short) 1, result.getProperty("PropertyInt16").asPrimitive());
+ Assert.assertEquals((short) 6, result.getProperty("PropertyEnumString").asEnum());
+ Assert.assertEquals(3, result.getProperty("CollPropertyEnumString").asCollection().size());
+ Assert.assertEquals("Test", result.getProperty("PropertyDefString").asPrimitive());
+ Assert.assertEquals(2, result.getProperty("CollPropertyDefString").asCollection().size());
+ Assert.assertEquals(4, result.getProperty("PropertyCompMixedEnumDef").asComplex().getValue().size());
+ Assert.assertEquals(1, result.getProperty("CollPropertyCompMixedEnumDef").asCollection().size());
+ }
+
@Test
public void entityWithNavigation() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESTwoPrim");
@@ -461,54 +518,30 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
Property result = deserializer.property(new ByteArrayInputStream(payload.getBytes()), edmProperty).getProperty();
Assert.assertEquals(Arrays.asList("Employee1@company.example", "Employee2@company.example",
"Employee3@company.example"), result.getValue());
-
}
-
+
@Test
public void complexProperty() throws Exception {
- Edm edm = Mockito.mock(Edm.class);
-
- CsdlProperty street = new CsdlProperty().setName("Street")
- .setType(EdmPrimitiveTypeKind.String.getFullQualifiedName());
- CsdlProperty city = new CsdlProperty().setName("City")
- .setType(EdmPrimitiveTypeKind.String.getFullQualifiedName());
- CsdlProperty region = new CsdlProperty().setName("Region")
- .setType(EdmPrimitiveTypeKind.String.getFullQualifiedName());
- CsdlProperty postalcode = new CsdlProperty().setName("PostalCode")
- .setType(EdmPrimitiveTypeKind.Int64.getFullQualifiedName());
-
- CsdlComplexType ct = new CsdlComplexType()
- .setName("Model.Address")
- .setProperties(Arrays.asList(street, city, region, postalcode));
- EdmComplexTypeImpl complexType = new EdmComplexTypeImpl(edm, new FullQualifiedName("Model.Address"), ct);
-
- Mockito.stub(edm.getComplexType(new FullQualifiedName("Model.Address"))).toReturn(complexType);
-
- CsdlProperty prop = new CsdlProperty();
- prop.setName("ShipTo");
- prop.setType(new FullQualifiedName("Model.Address"));
- EdmPropertyImpl edmProperty = new EdmPropertyImpl(edm, null, prop);
-
- String payload = "<data:ShipTo xmlns:data=\"http://docs.oasis-open.org/odata/ns/data\" " +
- " xmlns:metadata=\"http://docs.oasis-open.org/odata/ns/metadata\"\n" +
- " metadata:type=\"#Model.Address\">\n" +
- " <data:Street>Obere Str. 57</data:Street>\n" +
- " <data:City>Berlin</data:City>\n" +
- " <data:Region metadata:null=\"true\"/>\n" +
- " <data:PostalCode>12209</data:PostalCode>\n" +
- "</data:ShipTo>";
-
- Property result = deserializer.property(new ByteArrayInputStream(payload.getBytes()), edmProperty).getProperty();
+ final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixPrimCollComp");
+ final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("PropertyComp");
+ final String payload = "<data:PropertyComp xmlns:data=\"http://docs.oasis-open.org/odata/ns/data\" "
+ + " xmlns:metadata=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"
+ + " metadata:type=\"#olingo.odata.test1.CTTwoPrim\">\n"
+ + " <data:PropertyInt16>123</data:PropertyInt16>\n"
+ + " <data:PropertyString metadata:null=\"true\"/>\n"
+ + "</data:PropertyComp>";
- Assert.assertEquals("ShipTo", result.getName());
- Assert.assertTrue(result.getValue() instanceof ComplexValue);
- ComplexValue cv = (ComplexValue)result.getValue();
- Assert.assertEquals("Model.Address", result.getType());
- Assert.assertEquals("Berlin", getCVProperty(cv, "City").asPrimitive());
- Assert.assertEquals("Obere Str. 57", getCVProperty(cv, "Street").asPrimitive());
+ final Property result = deserializer.property(new ByteArrayInputStream(payload.getBytes()), edmProperty)
+ .getProperty();
+
+ Assert.assertEquals("PropertyComp", result.getName());
+ Assert.assertTrue(result.isComplex());
+ final ComplexValue cv = result.asComplex();
+ Assert.assertEquals("olingo.odata.test1.CTTwoPrim", result.getType());
+ Assert.assertEquals((short) 123, getCVProperty(cv, "PropertyInt16").asPrimitive());
+ Assert.assertTrue(getCVProperty(cv, "PropertyString").isNull());
}
-
- @SuppressWarnings("unchecked")
+
@Test
public void complexCollectionProperty() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixPrimCollComp");
@@ -531,16 +564,20 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
"</metadata:value>";
Property result = deserializer.property(new ByteArrayInputStream(payload.getBytes()), edmProperty).getProperty();
- List<ComplexValue> complex = (List<ComplexValue>)result.getValue();
-
- Assert.assertEquals(3, complex.size());
+ List<?> complexCollection = result.asCollection();
+
+ Assert.assertEquals(3, complexCollection.size());
Assert.assertEquals("Collection(olingo.odata.test1.CTTwoPrim)", result.getType());
- Assert.assertEquals((short) 123, getCVProperty(complex.get(0), "PropertyInt16").asPrimitive());
- Assert.assertEquals("TEST 1", getCVProperty(complex.get(0), "PropertyString").asPrimitive());
- Assert.assertEquals((short) 789, getCVProperty(complex.get(2), "PropertyInt16").asPrimitive());
- Assert.assertEquals("TEST 3", getCVProperty(complex.get(2), "PropertyString").asPrimitive());
+ Assert.assertEquals((short) 123,
+ getCVProperty((ComplexValue) complexCollection.get(0), "PropertyInt16").asPrimitive());
+ Assert.assertEquals("TEST 1",
+ getCVProperty((ComplexValue) complexCollection.get(0), "PropertyString").asPrimitive());
+ Assert.assertEquals((short) 789,
+ getCVProperty((ComplexValue) complexCollection.get(2), "PropertyInt16").asPrimitive());
+ Assert.assertEquals("TEST 3",
+ getCVProperty((ComplexValue) complexCollection.get(2), "PropertyString").asPrimitive());
}
-
+
@Test
public void entityReference() throws Exception {
String payload = "<metadata:ref xmlns:metadata=\"http://docs.oasis-open.org/odata/ns/metadata\"\n" +
@@ -553,7 +590,7 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
Assert.assertEquals(1, result.size());
Assert.assertEquals("http://host/service/Orders(10643)", result.get(0).toASCIIString());
}
-
+
@Test
public void entityReferences() throws Exception {
String payload = "<feed xmlns=\"http://www.w3.org/2005/Atom\"\n" +
@@ -562,7 +599,7 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest {
" <metadata:ref id=\"http://host/service/Orders(10643)\" />\n" +
" <metadata:ref id=\"http://host/service/Orders(10759)\" />\n" +
"</feed>";
-
+
List<URI> result = deserializer.entityReferences(new ByteArrayInputStream(payload.getBytes()))
.getEntityReferences();
Assert.assertEquals(2, result.size());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/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 a882fa6..b5da9ae 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
@@ -24,6 +24,7 @@ import java.util.Arrays;
import java.util.Collections;
import org.apache.commons.io.IOUtils;
+import org.apache.olingo.commons.api.data.ComplexValue;
import org.apache.olingo.commons.api.data.ContextURL;
import org.apache.olingo.commons.api.data.ContextURL.Suffix;
import org.apache.olingo.commons.api.data.Entity;
@@ -113,7 +114,7 @@ public class ODataJsonSerializerTest {
public void entityAllPrimAllNull() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim");
Entity entity = data.readAll(edmEntitySet).getEntities().get(0);
- entity.getProperties().retainAll(Arrays.asList(entity.getProperties().get(0)));
+ entity.getProperties().retainAll(Collections.singletonList(entity.getProperties().get(0)));
final String resultString = IOUtils.toString(serializer.entity(metadata, edmEntitySet.getEntityType(),
entity,
EntitySerializerOptions.with()
@@ -292,7 +293,7 @@ public class ODataJsonSerializerTest {
public void entityMixPrimCollCompAllNull() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixPrimCollComp");
Entity entity = data.readAll(edmEntitySet).getEntities().get(0);
- entity.getProperties().retainAll(Arrays.asList(entity.getProperties().get(0)));
+ entity.getProperties().retainAll(Collections.singletonList(entity.getProperties().get(0)));
final String resultString = IOUtils.toString(serializer.entity(metadata, edmEntitySet.getEntityType(), entity,
EntitySerializerOptions.with()
.contextURL(ContextURL.with().entitySet(edmEntitySet).suffix(Suffix.ENTITY).build())
@@ -305,6 +306,45 @@ public class ODataJsonSerializerTest {
}
@Test
+ public void enumAndTypeDefinition() throws Exception {
+ final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixEnumDefCollComp");
+ Entity entity = new Entity();
+ entity.addProperty(new Property(null, "PropertyInt16", ValueType.PRIMITIVE, 1));
+ entity.addProperty(new Property(null, "PropertyEnumString", ValueType.ENUM, 6));
+ entity.addProperty(new Property(null, "CollPropertyEnumString", ValueType.COLLECTION_ENUM,
+ Arrays.asList(2, 4, 6)));
+ entity.addProperty(new Property(null, "PropertyDefString", ValueType.PRIMITIVE, "Test"));
+ entity.addProperty(new Property(null, "CollPropertyDefString", ValueType.COLLECTION_PRIMITIVE,
+ Arrays.asList("Test1", "Test2")));
+ ComplexValue complexValue = new ComplexValue();
+ complexValue.getValue().add(entity.getProperty("PropertyEnumString"));
+ complexValue.getValue().add(entity.getProperty("CollPropertyEnumString"));
+ complexValue.getValue().add(entity.getProperty("PropertyDefString"));
+ complexValue.getValue().add(entity.getProperty("CollPropertyDefString"));
+ entity.addProperty(new Property(null, "PropertyCompMixedEnumDef", ValueType.COMPLEX, complexValue));
+ entity.addProperty(new Property(null, "CollPropertyCompMixedEnumDef", ValueType.COLLECTION_COMPLEX,
+ Collections.singletonList(complexValue)));
+ final String resultString = IOUtils.toString(serializer.entity(metadata, edmEntitySet.getEntityType(), entity,
+ EntitySerializerOptions.with()
+ .contextURL(ContextURL.with().entitySet(edmEntitySet).suffix(Suffix.ENTITY).build())
+ .build()).getContent());
+ Assert.assertEquals("{\"@odata.context\":\"$metadata#ESMixEnumDefCollComp/$entity\","
+ + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\","
+ + "\"PropertyInt16\":1,"
+ + "\"PropertyEnumString\":\"String2,String3\","
+ + "\"CollPropertyEnumString\":[\"String2\",\"String3\",\"String2,String3\"],"
+ + "\"PropertyDefString\":\"Test\","
+ + "\"CollPropertyDefString\":[\"Test1\",\"Test2\"],"
+ + "\"PropertyCompMixedEnumDef\":{\"PropertyEnumString\":\"String2,String3\","
+ + "\"CollPropertyEnumString\":[\"String2\",\"String3\",\"String2,String3\"],"
+ + "\"PropertyDefString\":\"Test\",\"CollPropertyDefString\":[\"Test1\",\"Test2\"]},"
+ + "\"CollPropertyCompMixedEnumDef\":[{\"PropertyEnumString\":\"String2,String3\","
+ + "\"CollPropertyEnumString\":[\"String2\",\"String3\",\"String2,String3\"],"
+ + "\"PropertyDefString\":\"Test\",\"CollPropertyDefString\":[\"Test1\",\"Test2\"]}]}",
+ resultString);
+ }
+
+ @Test
public void entityTwoPrimNoMetadata() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESTwoPrim");
final Entity entity = data.readAll(edmEntitySet).getEntities().get(0);
@@ -452,7 +492,7 @@ public class ODataJsonSerializerTest {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp");
final EdmEntityType entityType = edmEntitySet.getEntityType();
final EntityCollection entitySet = data.readAll(edmEntitySet);
- final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Collections.singletonList(
ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString")));
InputStream result = serializer
.entityCollection(metadata, entityType, entitySet,
@@ -501,7 +541,7 @@ 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 = ExpandSelectMock.mockExpandOption(Arrays.asList(
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Collections.singletonList(
ExpandSelectMock.mockExpandItem(edmEntitySet, "NavPropertyETAllPrimOne")));
InputStream result = serializer.entity(metadata, edmEntitySet.getEntityType(), entity,
EntitySerializerOptions.with()
@@ -537,11 +577,11 @@ public class ODataJsonSerializerTest {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESTwoPrim");
final EdmEntityType entityType = edmEntitySet.getEntityType();
final Entity entity = data.readAll(edmEntitySet).getEntities().get(3);
- final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Collections.singletonList(
ExpandSelectMock.mockSelectItem(entityContainer.getEntitySet("ESAllPrim"), "PropertyDate")));
ExpandItem expandItem = ExpandSelectMock.mockExpandItem(edmEntitySet, "NavPropertyETAllPrimOne");
Mockito.when(expandItem.getSelectOption()).thenReturn(select);
- final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItem));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Collections.singletonList(expandItem));
final String resultString = IOUtils.toString(serializer
.entity(metadata, entityType, entity,
EntitySerializerOptions.with()
@@ -568,7 +608,7 @@ public class ODataJsonSerializerTest {
Mockito.when(expandItemAll.isStar()).thenReturn(true);
final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(
expandItem, expandItem, expandItemAll));
- final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Collections.singletonList(
ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertySByte")));
final String resultString = IOUtils.toString(serializer
.entity(metadata, entityType, entity,
@@ -595,8 +635,8 @@ 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 = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItemAll));
- final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Collections.singletonList(expandItemAll));
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Collections.singletonList(
ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyTimeOfDay")));
final String resultString = IOUtils.toString(serializer
.entity(metadata, entityType, entity,
@@ -623,13 +663,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 = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItemSecond));
+ final ExpandOption expandInner = ExpandSelectMock.mockExpandOption(Collections.singletonList(expandItemSecond));
ExpandItem expandItemFirst = ExpandSelectMock.mockExpandItem(edmEntitySet, "NavPropertyETAllPrimMany");
Mockito.when(expandItemFirst.getExpandOption()).thenReturn(expandInner);
- final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList(
+ final SelectOption select = ExpandSelectMock.mockSelectOption(Collections.singletonList(
ExpandSelectMock.mockSelectItem(innerEntitySet, "PropertyInt32")));
Mockito.when(expandItemFirst.getSelectOption()).thenReturn(select);
- final ExpandOption expand = ExpandSelectMock.mockExpandOption(Arrays.asList(expandItemFirst));
+ final ExpandOption expand = ExpandSelectMock.mockExpandOption(Collections.singletonList(expandItemFirst));
final String resultString = IOUtils.toString(serializer
.entity(metadata, entityType, entity,
EntitySerializerOptions.with()
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
index 066103c..3b5f58f 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
@@ -30,20 +30,29 @@ import org.apache.olingo.commons.api.format.ContentType;
import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.ServiceMetadata;
import org.apache.olingo.server.api.edmx.EdmxReference;
+import org.apache.olingo.server.api.etag.ServiceMetadataETagSupport;
import org.apache.olingo.server.api.serializer.ODataSerializer;
-import org.apache.olingo.server.tecsvc.MetadataETagSupport;
import org.apache.olingo.server.tecsvc.provider.EdmTechProvider;
import org.junit.Test;
public class ServiceDocumentTest {
+ private static final String serviceRoot = "http://localhost:8080/odata.svc";
private static final ServiceMetadata metadata = OData.newInstance().createServiceMetadata(
- new EdmTechProvider(), Collections.<EdmxReference> emptyList(), new MetadataETagSupport("W/\"metadataETag\""));
+ new EdmTechProvider(), Collections.<EdmxReference> emptyList(),
+ new ServiceMetadataETagSupport() {
+ @Override
+ public String getServiceDocumentETag() {
+ return "W/\"serviceDocumentETag\"";
+ }
+ @Override
+ public String getMetadataETag() {
+ return "W/\"metadataETag\"";
+ }
+ });
@Test
public void writeServiceDocumentJson() throws Exception {
- final String serviceRoot = "http://localhost:8080/odata.svc";
-
OData server = OData.newInstance();
assertNotNull(server);
@@ -54,7 +63,8 @@ public class ServiceDocumentTest {
assertNotNull(result);
final String jsonString = IOUtils.toString(result);
- assertTrue(jsonString.contains(metadata.getServiceMetadataETagSupport().getMetadataETag().replace("\"", "\\\"")));
+ assertTrue(jsonString.contains(
+ metadata.getServiceMetadataETagSupport().getMetadataETag().replace("\"", "\\\"")));
assertTrue(jsonString.contains("ESAllPrim"));
assertTrue(jsonString.contains("ESCollAllPrim"));
@@ -75,7 +85,6 @@ public class ServiceDocumentTest {
@Test
public void serviceDocumentNoMetadata() throws Exception {
- final String serviceRoot = "http://localhost:8080/odata.svc";
final String result = IOUtils.toString(
OData.newInstance().createSerializer(ContentType.JSON_NO_METADATA)
.serviceDocument(metadata, serviceRoot).getContent());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
index 6f59060..a55398f 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
@@ -23,8 +23,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import java.net.URI;
-import java.util.Arrays;
-import java.util.List;
+import java.util.Collections;
import org.apache.commons.io.IOUtils;
import org.apache.olingo.commons.api.format.ContentType;
@@ -44,7 +43,10 @@ public class MetadataDocumentTest {
public void writeMetadataWithTechnicalScenario() throws Exception {
final OData odata = OData.newInstance();
final ServiceMetadata serviceMetadata = odata.createServiceMetadata(
- new EdmTechProvider(), getEdmxReferences());
+ new EdmTechProvider(),
+ Collections.singletonList(
+ new EdmxReference(URI.create(CORE_VOCABULARY))
+ .addInclude(new EdmxReferenceInclude("Org.OData.Core.V1", "Core"))));
final String metadata = IOUtils.toString(
odata.createSerializer(ContentType.APPLICATION_XML).metadataDocument(serviceMetadata).getContent());
@@ -138,23 +140,8 @@ public class MetadataDocumentTest {
// TypeDefCheck
assertThat(metadata,
- containsString("<Property Name=\"PropertyDefString\" Type=\"Namespace1_Alias.TDString\" MaxLength=\"15\"/>"));
- assertThat(metadata, containsString("<Property Name=\"CollPropertyDefString\" " +
- "Type=\"Collection(Namespace1_Alias.TDString)\" MaxLength=\"15\"/>"));
- }
-
- /**
- * <code>
- * <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/cs02/vocabularies/Org.OData.Core.V1.xml">
- * <edmx:Include Namespace="Org.OData.Core.V1" Alias="Core"/>
- * </edmx:Reference>
- * </code>
- *
- * @return default emdx reference
- */
- private List<EdmxReference> getEdmxReferences() {
- EdmxReference reference = new EdmxReference(URI.create(CORE_VOCABULARY));
- reference.addInclude(new EdmxReferenceInclude("Org.OData.Core.V1", "Core"));
- return Arrays.asList(reference);
+ containsString("<Property Name=\"PropertyDefString\" Type=\"Namespace1_Alias.TDString\"/>"));
+ assertThat(metadata,
+ containsString("<Property Name=\"CollPropertyDefString\" Type=\"Collection(Namespace1_Alias.TDString)\"/>"));
}
}