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 2014/01/28 17:18:46 UTC
git commit: [OLINGO-62] Even more edm tests
Updated Branches:
refs/heads/master ab6dff292 -> 757eb54c0
[OLINGO-62] Even more edm tests
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/757eb54c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/757eb54c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/757eb54c
Branch: refs/heads/master
Commit: 757eb54c0833cda6cb30afc031c1f763610e3c88
Parents: ab6dff2
Author: Christian Amend <ch...@apache.org>
Authored: Tue Jan 28 17:17:55 2014 +0100
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Jan 28 17:17:55 2014 +0100
----------------------------------------------------------------------
.../edm/provider/EdmEntityContainerImpl.java | 17 +-
.../edm/provider/EdmActionImportImplTest.java | 100 +++++++++
.../provider/EdmEntityContainerImplTest.java | 203 +++++++++++++++++++
3 files changed, 315 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/757eb54c/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java
index e462aad..5e89d32 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java
@@ -36,7 +36,6 @@ import org.apache.olingo.odata4.commons.api.edm.provider.FunctionImport;
import org.apache.olingo.odata4.commons.api.edm.provider.Singleton;
import org.apache.olingo.odata4.commons.api.exception.ODataException;
-
public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityContainer {
private final FullQualifiedName entityContainerName;
@@ -66,7 +65,9 @@ public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityCon
Singleton providerSingleton = provider.getSingleton(entityContainerName, singletonName);
if (providerSingleton != null) {
singleton = new EdmSingletonImpl(edm, this, providerSingleton);
- singletons.put(singletonName, singleton);
+ if (singleton != null) {
+ singletons.put(singletonName, singleton);
+ }
}
} catch (ODataException e) {
throw new EdmException(e);
@@ -83,7 +84,9 @@ public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityCon
EntitySet providerEntitySet = provider.getEntitySet(entityContainerName, entitySetName);
if (providerEntitySet != null) {
entitySet = new EdmEntitySetImpl(edm, this, providerEntitySet);
- entitySets.put(entitySetName, entitySet);
+ if (entitySet != null) {
+ entitySets.put(entitySetName, entitySet);
+ }
}
} catch (ODataException e) {
throw new EdmException(e);
@@ -100,7 +103,9 @@ public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityCon
ActionImport providerImport = provider.getActionImport(entityContainerName, actionImportName);
if (providerImport != null) {
actionImport = new EdmActionImportImpl(edm, actionImportName, this, providerImport);
- actionImports.put(actionImportName, actionImport);
+ if (actionImport != null) {
+ actionImports.put(actionImportName, actionImport);
+ }
}
} catch (ODataException e) {
throw new EdmException(e);
@@ -117,7 +122,9 @@ public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityCon
FunctionImport providerImport = provider.getFunctionImport(entityContainerName, functionImportName);
if (providerImport != null) {
functionImport = new EdmFunctionImportImpl(edm, functionImportName, this, providerImport);
- functionImports.put(functionImportName, functionImport);
+ if (functionImport != null) {
+ functionImports.put(functionImportName, functionImport);
+ }
}
} catch (ODataException e) {
throw new EdmException(e);
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/757eb54c/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImportImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImportImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImportImplTest.java
new file mode 100644
index 0000000..1421c23
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImportImplTest.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.provider;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmAction;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.provider.ActionImport;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.Target;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EdmActionImportImplTest {
+
+ EdmEntityContainer container;
+ EdmActionImport actionImport;
+ private EdmAction action;
+ private EdmEntitySet entitySet;
+
+ @Before
+ public void setup() {
+ FullQualifiedName actionFqn = new FullQualifiedName("namespace", "actionName");
+ FullQualifiedName entityContainerFqn = new FullQualifiedName("namespace", "containerName");
+ Target target = new Target().setEntityContainer(entityContainerFqn).setTargetName("entitySetName");
+ ActionImport providerActionImport =
+ new ActionImport().setName("actionImportName").setAction(actionFqn).setEntitySet(target);
+
+ EdmProviderImpl edm = mock(EdmProviderImpl.class);
+ container = mock(EdmEntityContainer.class);
+ when(edm.getEntityContainer(entityContainerFqn)).thenReturn(container);
+ action = mock(EdmAction.class);
+ when(edm.getAction(actionFqn, null, null)).thenReturn(action);
+
+ entitySet = mock(EdmEntitySet.class);
+ when(container.getEntitySet("entitySetName")).thenReturn(entitySet);
+ actionImport = new EdmActionImportImpl(edm, "actionImportName", container, providerActionImport);
+ }
+
+ @Test
+ public void simpleActionTest() {
+ assertEquals("actionImportName", actionImport.getName());
+ assertTrue(container == actionImport.getEntityContainer());
+ assertTrue(action == actionImport.getAction());
+ }
+
+ @Test
+ public void getReturnedEntitySet() {
+ EdmEntitySet returnedEntitySet = actionImport.getReturnedEntitySet();
+ assertNotNull(returnedEntitySet);
+ assertTrue(returnedEntitySet == entitySet);
+
+ // Chaching
+ assertTrue(returnedEntitySet == actionImport.getReturnedEntitySet());
+ }
+
+ @Test(expected = EdmException.class)
+ public void getReturnedEntitySetNonExistingContainer() {
+ Target target = new Target();
+ ActionImport providerActionImport = new ActionImport().setName("actionImportName").setEntitySet(target);
+ EdmActionImport actionImport =
+ new EdmActionImportImpl(mock(EdmProviderImpl.class), "actionImportName", container, providerActionImport);
+ actionImport.getReturnedEntitySet();
+ }
+
+ @Test(expected = EdmException.class)
+ public void getReturnedEntitySetNonExistingEntitySet() {
+ Target target = new Target();
+ ActionImport providerActionImport = new ActionImport().setName("actionImportName").setEntitySet(target);
+ EdmProviderImpl edm = mock(EdmProviderImpl.class);
+ when(edm.getEntityContainer(null)).thenReturn(container);
+ EdmActionImport actionImport = new EdmActionImportImpl(edm, "actionImportName", container, providerActionImport);
+ actionImport.getReturnedEntitySet();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/757eb54c/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImplTest.java
new file mode 100644
index 0000000..c273b21
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImplTest.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.provider;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmSingleton;
+import org.apache.olingo.odata4.commons.api.edm.provider.ActionImport;
+import org.apache.olingo.odata4.commons.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainerInfo;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntitySet;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.provider.Singleton;
+import org.apache.olingo.odata4.commons.api.exception.ODataException;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EdmEntityContainerImplTest {
+
+ EdmEntityContainer container;
+
+ @Before
+ public void setup() {
+ EdmProvider provider = new CustomProvider();
+ EdmProviderImpl edm = new EdmProviderImpl(provider);
+ EntityContainerInfo entityContainerInfo =
+ new EntityContainerInfo().setContainerName(new FullQualifiedName("space", "name"));
+ container = new EdmEntityContainerImpl(edm, provider, entityContainerInfo);
+ }
+
+ @Test
+ public void checkEdmExceptionConversion() throws Exception {
+ EdmProvider provider = mock(EdmProvider.class);
+ FullQualifiedName containerName = new FullQualifiedName("space", "name");
+ when(provider.getEntitySet(containerName, null)).thenThrow(new ODataException("msg"));
+ when(provider.getSingleton(containerName, null)).thenThrow(new ODataException("msg"));
+ when(provider.getFunctionImport(containerName, null)).thenThrow(new ODataException("msg"));
+ when(provider.getActionImport(containerName, null)).thenThrow(new ODataException("msg"));
+ EdmProviderImpl edm = new EdmProviderImpl(provider);
+ EntityContainerInfo entityContainerInfo =
+ new EntityContainerInfo().setContainerName(containerName);
+ EdmEntityContainer container = new EdmEntityContainerImpl(edm, provider, entityContainerInfo);
+ boolean thrown = false;
+ try {
+ container.getEntitySet(null);
+ } catch (EdmException e) {
+ thrown = true;
+ }
+ if (!thrown) {
+ fail("Expected EdmException not thrown");
+ }
+ try {
+ container.getSingleton(null);
+ } catch (EdmException e) {
+ thrown = true;
+ }
+ if (!thrown) {
+ fail("Expected EdmException not thrown");
+ }
+ try {
+ container.getActionImport(null);
+ } catch (EdmException e) {
+ thrown = true;
+ }
+ if (!thrown) {
+ fail("Expected EdmException not thrown");
+ }
+ try {
+ container.getFunctionImport(null);
+ } catch (EdmException e) {
+ thrown = true;
+ }
+ if (!thrown) {
+ fail("Expected EdmException not thrown");
+ }
+ }
+
+ @Test
+ public void simpleContainerGetter() {
+ assertEquals("name", container.getName());
+ assertEquals("space", container.getNamespace());
+ }
+
+ @Test
+ public void getExistingFunctionImport() {
+ EdmFunctionImport functionImport = container.getFunctionImport("functionImportName");
+ assertNotNull(functionImport);
+ assertEquals("functionImportName", functionImport.getName());
+ // Caching
+ assertTrue(functionImport == container.getFunctionImport("functionImportName"));
+ }
+
+ @Test
+ public void getNonExistingFunctionImport() {
+ assertNull(container.getFunctionImport(null));
+ }
+
+ @Test
+ public void getExistingActionImport() {
+ EdmActionImport actionImport = container.getActionImport("actionImportName");
+ assertNotNull(actionImport);
+ assertEquals("actionImportName", actionImport.getName());
+ // Caching
+ assertTrue(actionImport == container.getActionImport("actionImportName"));
+ }
+
+ @Test
+ public void getNonExistingActionImport() {
+ assertNull(container.getActionImport(null));
+ }
+
+ @Test
+ public void getExistingSingleton() {
+ EdmSingleton singleton = container.getSingleton("singletonName");
+ assertNotNull(singleton);
+ assertEquals("singletonName", singleton.getName());
+ // Caching
+ assertTrue(singleton == container.getSingleton("singletonName"));
+ }
+
+ @Test
+ public void getNonExistingSingleton() {
+ assertNull(container.getSingleton(null));
+ }
+
+ @Test
+ public void getExistingEntitySet() {
+ EdmEntitySet entitySet = container.getEntitySet("entitySetName");
+ assertNotNull(entitySet);
+ assertEquals("entitySetName", entitySet.getName());
+ // Caching
+ assertTrue(entitySet == container.getEntitySet("entitySetName"));
+ }
+
+ @Test
+ public void getNonExistingEntitySet() {
+ assertNull(container.getEntitySet(null));
+ }
+
+ private class CustomProvider extends EdmProvider {
+ @Override
+ public EntitySet getEntitySet(FullQualifiedName entityContainer, String entitySetName) throws ODataException {
+ if (entitySetName != null) {
+ return new EntitySet().setName("entitySetName");
+ }
+ return null;
+ }
+
+ @Override
+ public Singleton getSingleton(FullQualifiedName entityContainer, String singletonName) throws ODataException {
+ if (singletonName != null) {
+ return new Singleton().setName("singletonName");
+ }
+ return null;
+ }
+
+ @Override
+ public ActionImport getActionImport(FullQualifiedName entityContainer, String actionImportName)
+ throws ODataException {
+ if (actionImportName != null) {
+ return new ActionImport().setName("singletonName");
+ }
+ return null;
+ }
+
+ @Override
+ public FunctionImport getFunctionImport(FullQualifiedName entityContainer, String functionImportName)
+ throws ODataException {
+ if (functionImportName != null) {
+ return new FunctionImport().setName("singletonName");
+ }
+ return null;
+ }
+ }
+}