[OLINGO-786] Enhance Edm Tests
This commit is contained in:
parent
d9d33abe85
commit
5d66c9cf18
|
@ -192,9 +192,10 @@ public abstract class AbstractEdm implements Edm {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EdmAction getUnboundAction(final FullQualifiedName actionName) {
|
public EdmAction getUnboundAction(final FullQualifiedName actionName) {
|
||||||
EdmAction action = unboundActions.get(actionName);
|
final FullQualifiedName fqn = resolvePossibleAlias(actionName);
|
||||||
|
EdmAction action = unboundActions.get(fqn);
|
||||||
if (action == null) {
|
if (action == null) {
|
||||||
action = createUnboundAction(resolvePossibleAlias(actionName));
|
action = createUnboundAction(fqn);
|
||||||
if (action != null) {
|
if (action != null) {
|
||||||
unboundActions.put(actionName, action);
|
unboundActions.put(actionName, action);
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,8 +116,8 @@ public class EdmNavigationPropertyImpl extends AbstractEdmNamed implements EdmEl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
referentialConstraints = referentialConstraintsLocal;
|
referentialConstraints = Collections.unmodifiableList(referentialConstraintsLocal);
|
||||||
}
|
}
|
||||||
return Collections.unmodifiableList(referentialConstraints);
|
return referentialConstraints;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,9 @@ public class EdmTermImpl extends AbstractEdmNamed implements EdmTerm {
|
||||||
? typeInfo.getEnumType()
|
? typeInfo.getEnumType()
|
||||||
: typeInfo.isComplexType()
|
: typeInfo.isComplexType()
|
||||||
? typeInfo.getComplexType()
|
? typeInfo.getComplexType()
|
||||||
: null;
|
: typeInfo.isEntityType()
|
||||||
|
? typeInfo.getEntityType()
|
||||||
|
: null;
|
||||||
if (termType == null) {
|
if (termType == null) {
|
||||||
throw new EdmException("Cannot find type with name: " + typeInfo.getFullQualifiedName());
|
throw new EdmException("Cannot find type with name: " + typeInfo.getFullQualifiedName());
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,6 @@ import org.junit.Test;
|
||||||
public class ActionMapKeyTest {
|
public class ActionMapKeyTest {
|
||||||
|
|
||||||
private final FullQualifiedName fqn = new FullQualifiedName("namespace", "name");
|
private final FullQualifiedName fqn = new FullQualifiedName("namespace", "name");
|
||||||
|
|
||||||
private final FullQualifiedName fqnType = new FullQualifiedName("namespace2", "name2");
|
private final FullQualifiedName fqnType = new FullQualifiedName("namespace2", "name2");
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -53,6 +52,23 @@ public class ActionMapKeyTest {
|
||||||
}
|
}
|
||||||
fail("EdmException expected for parameters: " + fqn + " " + typeName + " " + collection);
|
fail("EdmException expected for parameters: " + fqn + " " + typeName + " " + collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNotEquals() {
|
||||||
|
ActionMapKey key;
|
||||||
|
ActionMapKey someKey;
|
||||||
|
|
||||||
|
key = new ActionMapKey(fqn, fqnType, false);
|
||||||
|
someKey = new ActionMapKey(fqnType, fqnType, false);
|
||||||
|
assertNotSame(key, someKey);
|
||||||
|
|
||||||
|
key = new ActionMapKey(fqn, fqnType, false);
|
||||||
|
someKey = new ActionMapKey(fqnType, fqnType, true);
|
||||||
|
assertNotSame(key, someKey);
|
||||||
|
|
||||||
|
key = new ActionMapKey(fqn, fqnType, false);
|
||||||
|
assertNotSame(key, null);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testEqualsMethod() {
|
public void testEqualsMethod() {
|
||||||
|
@ -60,6 +76,8 @@ public class ActionMapKeyTest {
|
||||||
ActionMapKey someKey;
|
ActionMapKey someKey;
|
||||||
|
|
||||||
key = new ActionMapKey(fqn, fqnType, false);
|
key = new ActionMapKey(fqn, fqnType, false);
|
||||||
|
assertEquals(key, key);
|
||||||
|
|
||||||
someKey = new ActionMapKey(fqn, fqnType, false);
|
someKey = new ActionMapKey(fqn, fqnType, false);
|
||||||
assertEquals(key, someKey);
|
assertEquals(key, someKey);
|
||||||
|
|
||||||
|
|
|
@ -135,38 +135,25 @@ public class EdmEntityContainerImplTest {
|
||||||
CsdlEntityContainerInfo entityContainerInfo =
|
CsdlEntityContainerInfo entityContainerInfo =
|
||||||
new CsdlEntityContainerInfo().setContainerName(containerName);
|
new CsdlEntityContainerInfo().setContainerName(containerName);
|
||||||
EdmEntityContainer container = new EdmEntityContainerImpl(edm, provider, entityContainerInfo);
|
EdmEntityContainer container = new EdmEntityContainerImpl(edm, provider, entityContainerInfo);
|
||||||
boolean thrown = false;
|
|
||||||
try {
|
try {
|
||||||
container.getEntitySet(null);
|
container.getEntitySet(null);
|
||||||
} catch (EdmException e) {
|
|
||||||
thrown = true;
|
|
||||||
}
|
|
||||||
if (!thrown) {
|
|
||||||
fail("Expected EdmException not thrown");
|
fail("Expected EdmException not thrown");
|
||||||
|
} catch (EdmException e) {
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
container.getSingleton(null);
|
container.getSingleton(null);
|
||||||
} catch (EdmException e) {
|
|
||||||
thrown = true;
|
|
||||||
}
|
|
||||||
if (!thrown) {
|
|
||||||
fail("Expected EdmException not thrown");
|
fail("Expected EdmException not thrown");
|
||||||
|
} catch (EdmException e) {
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
container.getActionImport(null);
|
container.getActionImport(null);
|
||||||
} catch (EdmException e) {
|
|
||||||
thrown = true;
|
|
||||||
}
|
|
||||||
if (!thrown) {
|
|
||||||
fail("Expected EdmException not thrown");
|
fail("Expected EdmException not thrown");
|
||||||
|
} catch (EdmException e) {
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
container.getFunctionImport(null);
|
container.getFunctionImport(null);
|
||||||
} catch (EdmException e) {
|
|
||||||
thrown = true;
|
|
||||||
}
|
|
||||||
if (!thrown) {
|
|
||||||
fail("Expected EdmException not thrown");
|
fail("Expected EdmException not thrown");
|
||||||
|
} catch (EdmException e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,6 +161,7 @@ public class EdmEntityContainerImplTest {
|
||||||
public void simpleContainerGetter() {
|
public void simpleContainerGetter() {
|
||||||
assertEquals("name", container.getName());
|
assertEquals("name", container.getName());
|
||||||
assertEquals("space", container.getNamespace());
|
assertEquals("space", container.getNamespace());
|
||||||
|
assertEquals(new FullQualifiedName("space.name"), container.getFullQualifiedName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -19,7 +19,10 @@
|
||||||
package org.apache.olingo.server.core.edm.provider;
|
package org.apache.olingo.server.core.edm.provider;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNull;
|
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.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@ -29,6 +32,7 @@ import org.apache.olingo.commons.api.edm.EdmBindingTarget;
|
||||||
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
|
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
|
||||||
import org.apache.olingo.commons.api.edm.EdmEntitySet;
|
import org.apache.olingo.commons.api.edm.EdmEntitySet;
|
||||||
import org.apache.olingo.commons.api.edm.EdmEntityType;
|
import org.apache.olingo.commons.api.edm.EdmEntityType;
|
||||||
|
import org.apache.olingo.commons.api.edm.EdmException;
|
||||||
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider;
|
import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo;
|
import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo;
|
||||||
|
@ -63,7 +67,6 @@ public class EdmEntitySetImplTest {
|
||||||
final CsdlEntitySet entitySetProvider = new CsdlEntitySet()
|
final CsdlEntitySet entitySetProvider = new CsdlEntitySet()
|
||||||
.setName(entitySetName)
|
.setName(entitySetName)
|
||||||
.setType(typeName)
|
.setType(typeName)
|
||||||
.setIncludeInServiceDocument(true)
|
|
||||||
.setNavigationPropertyBindings(Arrays.asList(
|
.setNavigationPropertyBindings(Arrays.asList(
|
||||||
new CsdlNavigationPropertyBinding().setPath("path")
|
new CsdlNavigationPropertyBinding().setPath("path")
|
||||||
.setTarget(containerName.getFullQualifiedNameAsString() + "/" + entitySetName)));
|
.setTarget(containerName.getFullQualifiedNameAsString() + "/" + entitySetName)));
|
||||||
|
@ -79,5 +82,35 @@ public class EdmEntitySetImplTest {
|
||||||
assertNull(entitySet.getRelatedBindingTarget(null));
|
assertNull(entitySet.getRelatedBindingTarget(null));
|
||||||
final EdmBindingTarget target = entitySet.getRelatedBindingTarget("path");
|
final EdmBindingTarget target = entitySet.getRelatedBindingTarget("path");
|
||||||
assertEquals(entitySetName, target.getName());
|
assertEquals(entitySetName, target.getName());
|
||||||
|
assertTrue(entitySet.isIncludeInServiceDocument());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void entitySetIncludeInServiceDocumentFalseAndInvalidType() throws Exception {
|
||||||
|
CsdlEdmProvider provider = mock(CsdlEdmProvider.class);
|
||||||
|
EdmProviderImpl edm = new EdmProviderImpl(provider);
|
||||||
|
|
||||||
|
final FullQualifiedName containerName = new FullQualifiedName("ns", "container");
|
||||||
|
final CsdlEntityContainerInfo containerInfo = new CsdlEntityContainerInfo().setContainerName(containerName);
|
||||||
|
when(provider.getEntityContainerInfo(containerName)).thenReturn(containerInfo);
|
||||||
|
final EdmEntityContainer entityContainer = new EdmEntityContainerImpl(edm, provider, containerInfo);
|
||||||
|
|
||||||
|
final String entitySetName = "entitySet";
|
||||||
|
final CsdlEntitySet entitySetProvider = new CsdlEntitySet()
|
||||||
|
.setName(entitySetName)
|
||||||
|
.setType("invalid.invalid")
|
||||||
|
.setIncludeInServiceDocument(false);
|
||||||
|
when(provider.getEntitySet(containerName, entitySetName)).thenReturn(entitySetProvider);
|
||||||
|
|
||||||
|
final EdmEntitySet entitySet = new EdmEntitySetImpl(edm, entityContainer, entitySetProvider);
|
||||||
|
assertFalse(entitySet.isIncludeInServiceDocument());
|
||||||
|
|
||||||
|
try {
|
||||||
|
entitySet.getEntityType();
|
||||||
|
fail("Expected an EdmException");
|
||||||
|
} catch (EdmException e) {
|
||||||
|
assertEquals("Can´t find entity type: invalid.invalid for entity set or singleton: " + entitySetName, e
|
||||||
|
.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,6 +378,11 @@ public class EdmEntityTypeImplTest {
|
||||||
instance.getBaseType();
|
instance.getBaseType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void openTypeDefaultIsFalse() {
|
||||||
|
assertFalse(baseType.isOpenType());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void abstractTypeWithAbstractBaseTypeDoesNotNeedKey() throws Exception {
|
public void abstractTypeWithAbstractBaseTypeDoesNotNeedKey() throws Exception {
|
||||||
CsdlEdmProvider provider = mock(CsdlEdmProvider.class);
|
CsdlEdmProvider provider = mock(CsdlEdmProvider.class);
|
||||||
|
|
|
@ -20,12 +20,15 @@ package org.apache.olingo.server.core.edm.provider;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
|
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
|
||||||
import org.apache.olingo.commons.api.edm.EdmFunction;
|
import org.apache.olingo.commons.api.edm.EdmFunction;
|
||||||
|
@ -75,14 +78,21 @@ public class EdmFunctionImportImplTest {
|
||||||
final EdmFunctionImport functionImport = new EdmFunctionImportImpl(edm, entityContainer, functionImportProvider);
|
final EdmFunctionImport functionImport = new EdmFunctionImportImpl(edm, entityContainer, functionImportProvider);
|
||||||
assertEquals(functionImportName, entityContainer.getFunctionImport(functionImportName).getName());
|
assertEquals(functionImportName, entityContainer.getFunctionImport(functionImportName).getName());
|
||||||
assertEquals("functionImport", functionImport.getName());
|
assertEquals("functionImport", functionImport.getName());
|
||||||
|
assertEquals(new FullQualifiedName("ns", functionImportName), functionImport.getFullQualifiedName());
|
||||||
|
assertTrue(functionImport.isIncludeInServiceDocument());
|
||||||
final EdmFunction function = functionImport.getUnboundFunction(Collections.<String> emptyList());
|
final EdmFunction function = functionImport.getUnboundFunction(Collections.<String> emptyList());
|
||||||
assertEquals(functionName.getNamespace(), function.getNamespace());
|
assertEquals(functionName.getNamespace(), function.getNamespace());
|
||||||
assertEquals(functionName.getName(), function.getName());
|
assertEquals(functionName.getName(), function.getName());
|
||||||
|
assertEquals(functionName, function.getFullQualifiedName());
|
||||||
assertFalse(function.isBound());
|
assertFalse(function.isBound());
|
||||||
assertFalse(function.isComposable());
|
assertFalse(function.isComposable());
|
||||||
assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Boolean),
|
assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Boolean),
|
||||||
function.getReturnType().getType());
|
function.getReturnType().getType());
|
||||||
assertEquals(entityContainer, functionImport.getEntityContainer());
|
assertEquals(entityContainer, functionImport.getEntityContainer());
|
||||||
assertNull(functionImport.getReturnedEntitySet());
|
assertNull(functionImport.getReturnedEntitySet());
|
||||||
|
|
||||||
|
List<EdmFunction> functions = functionImport.getUnboundFunctions();
|
||||||
|
assertNotNull(functions);
|
||||||
|
assertEquals(1, functions.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ import java.util.List;
|
||||||
|
|
||||||
import org.apache.olingo.commons.api.edm.EdmException;
|
import org.apache.olingo.commons.api.edm.EdmException;
|
||||||
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
|
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
|
||||||
|
import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
|
||||||
import org.apache.olingo.commons.api.edm.EdmType;
|
import org.apache.olingo.commons.api.edm.EdmType;
|
||||||
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
||||||
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
|
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
|
||||||
|
@ -66,6 +67,7 @@ public class EdmNavigationPropertyImplTest {
|
||||||
assertEquals("entity", type.getName());
|
assertEquals("entity", type.getName());
|
||||||
assertNull(property.getReferencingPropertyName("referencedPropertyName"));
|
assertNull(property.getReferencingPropertyName("referencedPropertyName"));
|
||||||
assertNull(property.getPartner());
|
assertNull(property.getPartner());
|
||||||
|
assertFalse(property.containsTarget());
|
||||||
|
|
||||||
// Test caching
|
// Test caching
|
||||||
EdmType cachedType = property.getType();
|
EdmType cachedType = property.getType();
|
||||||
|
@ -83,13 +85,22 @@ public class EdmNavigationPropertyImplTest {
|
||||||
CsdlNavigationProperty propertyProvider = new CsdlNavigationProperty();
|
CsdlNavigationProperty propertyProvider = new CsdlNavigationProperty();
|
||||||
propertyProvider.setType(entityTypeName);
|
propertyProvider.setType(entityTypeName);
|
||||||
propertyProvider.setNullable(false);
|
propertyProvider.setNullable(false);
|
||||||
|
propertyProvider.setContainsTarget(true);
|
||||||
List<CsdlReferentialConstraint> referentialConstraints = new ArrayList<CsdlReferentialConstraint>();
|
List<CsdlReferentialConstraint> referentialConstraints = new ArrayList<CsdlReferentialConstraint>();
|
||||||
referentialConstraints.add(new CsdlReferentialConstraint().setProperty("property").setReferencedProperty(
|
referentialConstraints.add(new CsdlReferentialConstraint().setProperty("property").setReferencedProperty(
|
||||||
"referencedProperty"));
|
"referencedProperty"));
|
||||||
propertyProvider.setReferentialConstraints(referentialConstraints);
|
propertyProvider.setReferentialConstraints(referentialConstraints);
|
||||||
|
|
||||||
EdmNavigationProperty property = new EdmNavigationPropertyImpl(edm, propertyProvider);
|
EdmNavigationProperty property = new EdmNavigationPropertyImpl(edm, propertyProvider);
|
||||||
assertEquals("property", property.getReferencingPropertyName("referencedProperty"));
|
assertEquals("property", property.getReferencingPropertyName("referencedProperty"));
|
||||||
assertNull(property.getReferencingPropertyName("wrong"));
|
assertNull(property.getReferencingPropertyName("wrong"));
|
||||||
|
assertTrue(property.containsTarget());
|
||||||
|
|
||||||
|
assertNotNull(property.getReferentialConstraints());
|
||||||
|
List<EdmReferentialConstraint> edmReferentialConstraints = property.getReferentialConstraints();
|
||||||
|
assertEquals(1, edmReferentialConstraints.size());
|
||||||
|
assertTrue(edmReferentialConstraints == property.getReferentialConstraints());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -120,6 +120,7 @@ public class EdmParameterImplTest {
|
||||||
assertEquals(Integer.valueOf(12), parameter.getScale());
|
assertEquals(Integer.valueOf(12), parameter.getScale());
|
||||||
assertEquals(Integer.valueOf(128), parameter.getMaxLength());
|
assertEquals(Integer.valueOf(128), parameter.getMaxLength());
|
||||||
assertFalse(parameter.isNullable());
|
assertFalse(parameter.isNullable());
|
||||||
|
assertNull(parameter.getSrid());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = EdmException.class)
|
@Test(expected = EdmException.class)
|
||||||
|
|
|
@ -154,5 +154,6 @@ public class EdmPropertyImplTest {
|
||||||
assertTrue(property.isUnicode());
|
assertTrue(property.isUnicode());
|
||||||
assertFalse(property.isNullable());
|
assertFalse(property.isNullable());
|
||||||
assertEquals("x", property.getDefaultValue());
|
assertEquals("x", property.getDefaultValue());
|
||||||
|
assertNull(property.getSrid());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ import java.util.List;
|
||||||
|
|
||||||
import org.apache.olingo.commons.api.ex.ODataException;
|
import org.apache.olingo.commons.api.ex.ODataException;
|
||||||
import org.apache.olingo.commons.api.edm.Edm;
|
import org.apache.olingo.commons.api.edm.Edm;
|
||||||
|
import org.apache.olingo.commons.api.edm.EdmAnnotations;
|
||||||
import org.apache.olingo.commons.api.edm.EdmComplexType;
|
import org.apache.olingo.commons.api.edm.EdmComplexType;
|
||||||
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
|
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
|
||||||
import org.apache.olingo.commons.api.edm.EdmEntityType;
|
import org.apache.olingo.commons.api.edm.EdmEntityType;
|
||||||
|
@ -40,6 +41,7 @@ import org.apache.olingo.commons.api.edm.EdmException;
|
||||||
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
|
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
|
||||||
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo;
|
import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo;
|
||||||
|
import org.apache.olingo.commons.api.edm.provider.CsdlAnnotations;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlComplexType;
|
import org.apache.olingo.commons.api.edm.provider.CsdlComplexType;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider;
|
import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo;
|
import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo;
|
||||||
|
@ -81,6 +83,10 @@ public class EdmProviderImplTest {
|
||||||
aliasInfos.add(new CsdlAliasInfo().setAlias("alias").setNamespace("namespace"));
|
aliasInfos.add(new CsdlAliasInfo().setAlias("alias").setNamespace("namespace"));
|
||||||
when(provider.getAliasInfos()).thenReturn(aliasInfos);
|
when(provider.getAliasInfos()).thenReturn(aliasInfos);
|
||||||
|
|
||||||
|
CsdlAnnotations annotationsGroup = new CsdlAnnotations();
|
||||||
|
annotationsGroup.setTarget("FQN.FQN");
|
||||||
|
when(provider.getAnnotationsGroup(FQN, null)).thenReturn(annotationsGroup);
|
||||||
|
|
||||||
edm = new EdmProviderImpl(provider);
|
edm = new EdmProviderImpl(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,6 +118,7 @@ public class EdmProviderImplTest {
|
||||||
when(localProvider.getComplexType(fqn)).thenThrow(new ODataException("msg"));
|
when(localProvider.getComplexType(fqn)).thenThrow(new ODataException("msg"));
|
||||||
when(localProvider.getActions(fqn)).thenThrow(new ODataException("msg"));
|
when(localProvider.getActions(fqn)).thenThrow(new ODataException("msg"));
|
||||||
when(localProvider.getFunctions(fqn)).thenThrow(new ODataException("msg"));
|
when(localProvider.getFunctions(fqn)).thenThrow(new ODataException("msg"));
|
||||||
|
when(localProvider.getAnnotationsGroup(fqn, null)).thenThrow(new ODataException("msg"));
|
||||||
|
|
||||||
Edm localEdm = new EdmProviderImpl(localProvider);
|
Edm localEdm = new EdmProviderImpl(localProvider);
|
||||||
|
|
||||||
|
@ -124,23 +131,34 @@ public class EdmProviderImplTest {
|
||||||
// seperate because of signature
|
// seperate because of signature
|
||||||
try {
|
try {
|
||||||
localEdm.getUnboundAction(fqn);
|
localEdm.getUnboundAction(fqn);
|
||||||
|
fail("Expeced an EdmException");
|
||||||
} catch (EdmException e) {
|
} catch (EdmException e) {
|
||||||
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
localEdm.getUnboundFunction(fqn, null);
|
localEdm.getUnboundFunction(fqn, null);
|
||||||
|
fail("Expeced an EdmException");
|
||||||
} catch (EdmException e) {
|
} catch (EdmException e) {
|
||||||
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
localEdm.getBoundAction(fqn, fqn, true);
|
localEdm.getBoundAction(fqn, fqn, true);
|
||||||
|
fail("Expeced an EdmException");
|
||||||
} catch (EdmException e) {
|
} catch (EdmException e) {
|
||||||
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
localEdm.getBoundFunction(fqn, fqn, true, null);
|
localEdm.getBoundFunction(fqn, fqn, true, null);
|
||||||
|
fail("Expeced an EdmException");
|
||||||
|
} catch (EdmException e) {
|
||||||
|
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
localEdm.getAnnotationGroup(fqn, null);
|
||||||
|
fail("Expeced an EdmException");
|
||||||
} catch (EdmException e) {
|
} catch (EdmException e) {
|
||||||
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
assertEquals("org.apache.olingo.commons.api.ex.ODataException: msg", e.getMessage());
|
||||||
}
|
}
|
||||||
|
@ -222,4 +240,12 @@ public class EdmProviderImplTest {
|
||||||
|
|
||||||
assertNull(edm.getComplexType(WRONG_FQN));
|
assertNull(edm.getComplexType(WRONG_FQN));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAnnotations() {
|
||||||
|
EdmAnnotations annotationGroup = edm.getAnnotationGroup(FQN, null);
|
||||||
|
assertNotNull(annotationGroup);
|
||||||
|
|
||||||
|
assertNull(edm.getAnnotationGroup(WRONG_FQN, null));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* 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.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
import org.apache.olingo.commons.api.edm.Edm;
|
||||||
|
import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
|
||||||
|
import org.apache.olingo.commons.api.edm.provider.CsdlReferentialConstraint;
|
||||||
|
import org.apache.olingo.commons.core.edm.EdmReferentialConstraintImpl;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class EdmReferentialConstraintTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initialConstraint() {
|
||||||
|
CsdlReferentialConstraint constraint = new CsdlReferentialConstraint();
|
||||||
|
EdmReferentialConstraint edmConstraint = new EdmReferentialConstraintImpl(mock(Edm.class), constraint);
|
||||||
|
|
||||||
|
assertNull(edmConstraint.getPropertyName());
|
||||||
|
assertNull(edmConstraint.getReferencedPropertyName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void basicConstraint() {
|
||||||
|
CsdlReferentialConstraint constraint = new CsdlReferentialConstraint();
|
||||||
|
constraint.setProperty("PropertyName");
|
||||||
|
constraint.setReferencedProperty("referencedProperty");
|
||||||
|
EdmReferentialConstraint edmConstraint = new EdmReferentialConstraintImpl(mock(Edm.class), constraint);
|
||||||
|
|
||||||
|
assertEquals("PropertyName", edmConstraint.getPropertyName());
|
||||||
|
assertEquals("referencedProperty", edmConstraint.getReferencedPropertyName());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -55,6 +55,7 @@ public class EdmReturnTypeImplTest {
|
||||||
assertNull(typeImpl.getPrecision());
|
assertNull(typeImpl.getPrecision());
|
||||||
assertNull(typeImpl.getMaxLength());
|
assertNull(typeImpl.getMaxLength());
|
||||||
assertNull(typeImpl.getScale());
|
assertNull(typeImpl.getScale());
|
||||||
|
assertNull(typeImpl.getSrid());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -64,8 +65,10 @@ public class EdmReturnTypeImplTest {
|
||||||
|
|
||||||
EdmReturnType typeImpl = new EdmReturnTypeImpl(mock(EdmProviderImpl.class), providerType);
|
EdmReturnType typeImpl = new EdmReturnTypeImpl(mock(EdmProviderImpl.class), providerType);
|
||||||
|
|
||||||
assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String), typeImpl.getType());
|
EdmType cachedType = typeImpl.getType();
|
||||||
|
assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String), cachedType);
|
||||||
assertTrue(typeImpl.isCollection());
|
assertTrue(typeImpl.isCollection());
|
||||||
|
assertTrue(cachedType == typeImpl.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = EdmException.class)
|
@Test(expected = EdmException.class)
|
||||||
|
|
|
@ -27,10 +27,10 @@ import static org.mockito.Mockito.when;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.olingo.commons.api.ex.ODataException;
|
|
||||||
import org.apache.olingo.commons.api.edm.Edm;
|
import org.apache.olingo.commons.api.edm.Edm;
|
||||||
import org.apache.olingo.commons.api.edm.EdmAction;
|
import org.apache.olingo.commons.api.edm.EdmAction;
|
||||||
import org.apache.olingo.commons.api.edm.EdmActionImport;
|
import org.apache.olingo.commons.api.edm.EdmActionImport;
|
||||||
|
import org.apache.olingo.commons.api.edm.EdmAnnotations;
|
||||||
import org.apache.olingo.commons.api.edm.EdmComplexType;
|
import org.apache.olingo.commons.api.edm.EdmComplexType;
|
||||||
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
|
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
|
||||||
import org.apache.olingo.commons.api.edm.EdmEntitySet;
|
import org.apache.olingo.commons.api.edm.EdmEntitySet;
|
||||||
|
@ -43,10 +43,10 @@ import org.apache.olingo.commons.api.edm.EdmSchema;
|
||||||
import org.apache.olingo.commons.api.edm.EdmSingleton;
|
import org.apache.olingo.commons.api.edm.EdmSingleton;
|
||||||
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
|
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
|
||||||
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmProvider;
|
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlAction;
|
import org.apache.olingo.commons.api.edm.provider.CsdlAction;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlActionImport;
|
import org.apache.olingo.commons.api.edm.provider.CsdlActionImport;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo;
|
import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo;
|
||||||
|
import org.apache.olingo.commons.api.edm.provider.CsdlAnnotations;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlComplexType;
|
import org.apache.olingo.commons.api.edm.provider.CsdlComplexType;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider;
|
import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainer;
|
import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainer;
|
||||||
|
@ -60,6 +60,7 @@ import org.apache.olingo.commons.api.edm.provider.CsdlSchema;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlSingleton;
|
import org.apache.olingo.commons.api.edm.provider.CsdlSingleton;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlTerm;
|
import org.apache.olingo.commons.api.edm.provider.CsdlTerm;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition;
|
import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition;
|
||||||
|
import org.apache.olingo.commons.api.ex.ODataException;
|
||||||
import org.apache.olingo.commons.core.edm.EdmProviderImpl;
|
import org.apache.olingo.commons.core.edm.EdmProviderImpl;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -68,6 +69,8 @@ public class EdmSchemaImplTest {
|
||||||
|
|
||||||
private EdmSchema schema;
|
private EdmSchema schema;
|
||||||
private Edm edm;
|
private Edm edm;
|
||||||
|
public static final String NAMESPACE = "org.namespace";
|
||||||
|
public static final String ALIAS = "alias";
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
@ -108,7 +111,8 @@ public class EdmSchemaImplTest {
|
||||||
assertEquals(2, typeDefinitions.size());
|
assertEquals(2, typeDefinitions.size());
|
||||||
|
|
||||||
for (EdmTypeDefinition def : typeDefinitions) {
|
for (EdmTypeDefinition def : typeDefinitions) {
|
||||||
assertTrue(def == edm.getTypeDefinition(new FullQualifiedName("org.namespace", def.getName())));
|
assertTrue(def == edm.getTypeDefinition(new FullQualifiedName(NAMESPACE, def.getName())));
|
||||||
|
assertTrue(def == edm.getTypeDefinition(new FullQualifiedName(ALIAS, def.getName())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +123,8 @@ public class EdmSchemaImplTest {
|
||||||
assertEquals(2, enumTypes.size());
|
assertEquals(2, enumTypes.size());
|
||||||
|
|
||||||
for (EdmEnumType enumType : enumTypes) {
|
for (EdmEnumType enumType : enumTypes) {
|
||||||
assertTrue(enumType == edm.getEnumType(new FullQualifiedName("org.namespace", enumType.getName())));
|
assertTrue(enumType == edm.getEnumType(new FullQualifiedName(NAMESPACE, enumType.getName())));
|
||||||
|
assertTrue(enumType == edm.getEnumType(new FullQualifiedName(ALIAS, enumType.getName())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +135,8 @@ public class EdmSchemaImplTest {
|
||||||
assertEquals(2, entityTypes.size());
|
assertEquals(2, entityTypes.size());
|
||||||
|
|
||||||
for (EdmEntityType entityType : entityTypes) {
|
for (EdmEntityType entityType : entityTypes) {
|
||||||
assertTrue(entityType == edm.getEntityType(new FullQualifiedName("org.namespace", entityType.getName())));
|
assertTrue(entityType == edm.getEntityType(new FullQualifiedName(NAMESPACE, entityType.getName())));
|
||||||
|
assertTrue(entityType == edm.getEntityType(new FullQualifiedName(ALIAS, entityType.getName())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +147,8 @@ public class EdmSchemaImplTest {
|
||||||
assertEquals(2, complexTypes.size());
|
assertEquals(2, complexTypes.size());
|
||||||
|
|
||||||
for (EdmComplexType complexType : complexTypes) {
|
for (EdmComplexType complexType : complexTypes) {
|
||||||
assertTrue(complexType == edm.getComplexType(new FullQualifiedName("org.namespace", complexType.getName())));
|
assertTrue(complexType == edm.getComplexType(new FullQualifiedName(NAMESPACE, complexType.getName())));
|
||||||
|
assertTrue(complexType == edm.getComplexType(new FullQualifiedName(ALIAS, complexType.getName())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +159,8 @@ public class EdmSchemaImplTest {
|
||||||
assertEquals(2, actions.size());
|
assertEquals(2, actions.size());
|
||||||
|
|
||||||
for (EdmAction action : actions) {
|
for (EdmAction action : actions) {
|
||||||
assertTrue(action == edm.getUnboundAction(new FullQualifiedName("org.namespace", action.getName())));
|
assertTrue(action == edm.getUnboundAction(new FullQualifiedName(NAMESPACE, action.getName())));
|
||||||
|
assertTrue(action == edm.getUnboundAction(new FullQualifiedName(ALIAS, action.getName())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,11 +171,29 @@ public class EdmSchemaImplTest {
|
||||||
assertEquals(2, functions.size());
|
assertEquals(2, functions.size());
|
||||||
|
|
||||||
for (EdmFunction function : functions) {
|
for (EdmFunction function : functions) {
|
||||||
FullQualifiedName functionName = new FullQualifiedName("org.namespace", function.getName());
|
FullQualifiedName functionName = new FullQualifiedName(NAMESPACE, function.getName());
|
||||||
|
assertTrue(function == edm.getUnboundFunction(functionName, null));
|
||||||
|
|
||||||
|
functionName = new FullQualifiedName(ALIAS, function.getName());
|
||||||
assertTrue(function == edm.getUnboundFunction(functionName, null));
|
assertTrue(function == edm.getUnboundFunction(functionName, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAnnotationGroups() {
|
||||||
|
List<EdmAnnotations> annotationGroups = schema.getAnnotationGroups();
|
||||||
|
assertNotNull(annotationGroups);
|
||||||
|
assertEquals(2, annotationGroups.size());
|
||||||
|
|
||||||
|
for (EdmAnnotations annotationGroup : annotationGroups) {
|
||||||
|
FullQualifiedName targetName = new FullQualifiedName(annotationGroup.getTargetPath());
|
||||||
|
assertTrue(annotationGroup == edm.getAnnotationGroup(targetName, null));
|
||||||
|
targetName = new FullQualifiedName(annotationGroup.getTargetPath().replace(NAMESPACE, ALIAS));
|
||||||
|
assertTrue(annotationGroup == edm.getAnnotationGroup(targetName, null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getContainer() {
|
public void getContainer() {
|
||||||
EdmEntityContainer container = schema.getEntityContainer();
|
EdmEntityContainer container = schema.getEntityContainer();
|
||||||
|
@ -205,10 +231,7 @@ public class EdmSchemaImplTest {
|
||||||
assertTrue(container == edm.getEntityContainer(null));
|
assertTrue(container == edm.getEntityContainer(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LocalProvider extends CsdlAbstractEdmProvider {
|
private class LocalProvider implements CsdlEdmProvider {
|
||||||
|
|
||||||
private static final String ALIAS = "alias";
|
|
||||||
private static final String NAMESPACE = "org.namespace";
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CsdlEnumType getEnumType(final FullQualifiedName enumTypeName) throws ODataException {
|
public CsdlEnumType getEnumType(final FullQualifiedName enumTypeName) throws ODataException {
|
||||||
|
@ -350,6 +373,17 @@ public class EdmSchemaImplTest {
|
||||||
functions.add(new CsdlFunction().setName("function1"));
|
functions.add(new CsdlFunction().setName("function1"));
|
||||||
functions.add(new CsdlFunction().setName("function2"));
|
functions.add(new CsdlFunction().setName("function2"));
|
||||||
providerSchema.setFunctions(functions);
|
providerSchema.setFunctions(functions);
|
||||||
|
|
||||||
|
List<CsdlAnnotations> annotationGroups = new ArrayList<CsdlAnnotations>();
|
||||||
|
annotationGroups.add(new CsdlAnnotations().setTarget(NAMESPACE + ".entityType1"));
|
||||||
|
annotationGroups.add(new CsdlAnnotations().setTarget(NAMESPACE + ".entityType2"));
|
||||||
|
providerSchema.setAnnotationsGroup(annotationGroups);
|
||||||
|
|
||||||
|
List<CsdlTerm> terms = new ArrayList<CsdlTerm>();
|
||||||
|
terms.add(new CsdlTerm().setName("term1").setType("Edm.String"));
|
||||||
|
terms.add(new CsdlTerm().setName("term2").setType("Edm.String"));
|
||||||
|
providerSchema.setTerms(terms);
|
||||||
|
|
||||||
ArrayList<CsdlSchema> schemas = new ArrayList<CsdlSchema>();
|
ArrayList<CsdlSchema> schemas = new ArrayList<CsdlSchema>();
|
||||||
schemas.add(providerSchema);
|
schemas.add(providerSchema);
|
||||||
return schemas;
|
return schemas;
|
||||||
|
@ -359,5 +393,10 @@ public class EdmSchemaImplTest {
|
||||||
public CsdlEntityContainer getEntityContainer() throws ODataException {
|
public CsdlEntityContainer getEntityContainer() throws ODataException {
|
||||||
throw new RuntimeException("Provider must not be called in the schema case");
|
throw new RuntimeException("Provider must not be called in the schema case");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CsdlAnnotations getAnnotationsGroup(FullQualifiedName targetName, String qualifier) throws ODataException {
|
||||||
|
throw new RuntimeException("Provider must not be called in the schema case");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,14 +23,22 @@ import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.olingo.commons.api.edm.Edm;
|
||||||
|
import org.apache.olingo.commons.api.edm.EdmComplexType;
|
||||||
|
import org.apache.olingo.commons.api.edm.EdmEntityType;
|
||||||
|
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.EdmPrimitiveType;
|
||||||
import org.apache.olingo.commons.api.edm.EdmTerm;
|
import org.apache.olingo.commons.api.edm.EdmTerm;
|
||||||
|
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
|
||||||
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
||||||
import org.apache.olingo.commons.api.edm.TargetType;
|
import org.apache.olingo.commons.api.edm.TargetType;
|
||||||
import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation;
|
import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation;
|
||||||
|
@ -68,32 +76,32 @@ public class EdmTermImplTest {
|
||||||
derivedCsdlTerm.setAppliesTo(appliesTo);
|
derivedCsdlTerm.setAppliesTo(appliesTo);
|
||||||
List<CsdlAnnotation> csdlAnnotations = new ArrayList<CsdlAnnotation>();
|
List<CsdlAnnotation> csdlAnnotations = new ArrayList<CsdlAnnotation>();
|
||||||
csdlAnnotations.add(new CsdlAnnotation().setTerm("name1"));
|
csdlAnnotations.add(new CsdlAnnotation().setTerm("name1"));
|
||||||
derivedCsdlTerm.setAnnotations(csdlAnnotations );
|
derivedCsdlTerm.setAnnotations(csdlAnnotations);
|
||||||
|
|
||||||
derivedCsdlTerm.setNullable(false);
|
derivedCsdlTerm.setNullable(false);
|
||||||
derivedCsdlTerm.setMaxLength(new Integer(15));
|
derivedCsdlTerm.setMaxLength(new Integer(15));
|
||||||
derivedCsdlTerm.setDefaultValue("abc");
|
derivedCsdlTerm.setDefaultValue("abc");
|
||||||
derivedCsdlTerm.setPrecision(new Integer(14));
|
derivedCsdlTerm.setPrecision(new Integer(14));
|
||||||
derivedCsdlTerm.setScale(new Integer(13));
|
derivedCsdlTerm.setScale(new Integer(13));
|
||||||
|
|
||||||
when(provider.getTerm(derivedTermName)).thenReturn(derivedCsdlTerm);
|
when(provider.getTerm(derivedTermName)).thenReturn(derivedCsdlTerm);
|
||||||
derivedTerm = new EdmTermImpl(edm, "namespace", derivedCsdlTerm);
|
derivedTerm = new EdmTermImpl(edm, "namespace", derivedCsdlTerm);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void termBasics() throws Exception {
|
public void termBasics() throws Exception {
|
||||||
assertEquals("name1", initialTerm.getName());
|
assertEquals("name1", initialTerm.getName());
|
||||||
assertEquals(new FullQualifiedName("namespace", "name1"), initialTerm.getFullQualifiedName());
|
assertEquals(new FullQualifiedName("namespace", "name1"), initialTerm.getFullQualifiedName());
|
||||||
|
|
||||||
assertTrue(initialTerm.getAnnotations().isEmpty());
|
assertTrue(initialTerm.getAnnotations().isEmpty());
|
||||||
assertTrue(initialTerm.getAppliesTo().isEmpty());
|
assertTrue(initialTerm.getAppliesTo().isEmpty());
|
||||||
assertNull(initialTerm.getBaseTerm());
|
assertNull(initialTerm.getBaseTerm());
|
||||||
|
|
||||||
EdmPrimitiveType type = (EdmPrimitiveType) initialTerm.getType();
|
EdmPrimitiveType type = (EdmPrimitiveType) initialTerm.getType();
|
||||||
assertEquals(type.getName(), "String");
|
assertEquals(type.getName(), "String");
|
||||||
|
|
||||||
//initial facets
|
// initial facets
|
||||||
assertTrue(initialTerm.isNullable());
|
assertTrue(initialTerm.isNullable());
|
||||||
assertNull(initialTerm.getDefaultValue());
|
assertNull(initialTerm.getDefaultValue());
|
||||||
assertNull(initialTerm.getMaxLength());
|
assertNull(initialTerm.getMaxLength());
|
||||||
|
@ -101,12 +109,12 @@ public class EdmTermImplTest {
|
||||||
assertNull(initialTerm.getScale());
|
assertNull(initialTerm.getScale());
|
||||||
assertNull(initialTerm.getSrid());
|
assertNull(initialTerm.getSrid());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void derivedTermTest() {
|
public void derivedTermTest() {
|
||||||
assertEquals("name2", derivedTerm.getName());
|
assertEquals("name2", derivedTerm.getName());
|
||||||
assertEquals(new FullQualifiedName("namespace", "name2"), derivedTerm.getFullQualifiedName());
|
assertEquals(new FullQualifiedName("namespace", "name2"), derivedTerm.getFullQualifiedName());
|
||||||
|
|
||||||
assertNotNull(derivedTerm.getBaseTerm());
|
assertNotNull(derivedTerm.getBaseTerm());
|
||||||
assertEquals("name1", derivedTerm.getBaseTerm().getName());
|
assertEquals("name1", derivedTerm.getBaseTerm().getName());
|
||||||
assertFalse(derivedTerm.getAnnotations().isEmpty());
|
assertFalse(derivedTerm.getAnnotations().isEmpty());
|
||||||
|
@ -116,8 +124,8 @@ public class EdmTermImplTest {
|
||||||
|
|
||||||
EdmPrimitiveType type = (EdmPrimitiveType) derivedTerm.getType();
|
EdmPrimitiveType type = (EdmPrimitiveType) derivedTerm.getType();
|
||||||
assertEquals(type.getName(), "String");
|
assertEquals(type.getName(), "String");
|
||||||
|
|
||||||
//set facets
|
// set facets
|
||||||
assertFalse(derivedTerm.isNullable());
|
assertFalse(derivedTerm.isNullable());
|
||||||
assertEquals("abc", derivedTerm.getDefaultValue());
|
assertEquals("abc", derivedTerm.getDefaultValue());
|
||||||
assertEquals(new Integer(15), derivedTerm.getMaxLength());
|
assertEquals(new Integer(15), derivedTerm.getMaxLength());
|
||||||
|
@ -126,4 +134,103 @@ public class EdmTermImplTest {
|
||||||
assertNull(derivedTerm.getSrid());
|
assertNull(derivedTerm.getSrid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void termWithTypeDef() {
|
||||||
|
CsdlTerm csdlTerm = new CsdlTerm();
|
||||||
|
FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1");
|
||||||
|
csdlTerm.setName(csdlTerm1Name.getName());
|
||||||
|
String namespaceAndName = "mySchema.TypeDef";
|
||||||
|
String name = "TypeDef";
|
||||||
|
csdlTerm.setType(namespaceAndName);
|
||||||
|
Edm edm = mock(Edm.class);
|
||||||
|
EdmTypeDefinition typeMock = mock(EdmTypeDefinition.class);
|
||||||
|
when(typeMock.getName()).thenReturn(name);
|
||||||
|
when(edm.getTypeDefinition(new FullQualifiedName(namespaceAndName))).thenReturn(typeMock);
|
||||||
|
EdmTerm localTerm = new EdmTermImpl(edm, "namespace", csdlTerm);
|
||||||
|
assertNotNull(localTerm.getType());
|
||||||
|
assertEquals(name, localTerm.getType().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void termWithEnumType() {
|
||||||
|
CsdlTerm csdlTerm = new CsdlTerm();
|
||||||
|
FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1");
|
||||||
|
csdlTerm.setName(csdlTerm1Name.getName());
|
||||||
|
String namespaceAndName = "mySchema.Enum";
|
||||||
|
String name = "Enum";
|
||||||
|
csdlTerm.setType(namespaceAndName);
|
||||||
|
Edm edm = mock(Edm.class);
|
||||||
|
EdmEnumType typeMock = mock(EdmEnumType.class);
|
||||||
|
when(typeMock.getName()).thenReturn(name);
|
||||||
|
when(edm.getEnumType(new FullQualifiedName(namespaceAndName))).thenReturn(typeMock);
|
||||||
|
EdmTerm localTerm = new EdmTermImpl(edm, "namespace", csdlTerm);
|
||||||
|
assertNotNull(localTerm.getType());
|
||||||
|
assertEquals(name, localTerm.getType().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void termWithComplexType() {
|
||||||
|
CsdlTerm csdlTerm = new CsdlTerm();
|
||||||
|
FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1");
|
||||||
|
csdlTerm.setName(csdlTerm1Name.getName());
|
||||||
|
String namespaceAndName = "mySchema.Complex";
|
||||||
|
String name = "Complex";
|
||||||
|
csdlTerm.setType(namespaceAndName);
|
||||||
|
Edm edm = mock(Edm.class);
|
||||||
|
EdmComplexType typeMock = mock(EdmComplexType.class);
|
||||||
|
when(typeMock.getName()).thenReturn(name);
|
||||||
|
when(edm.getComplexType(new FullQualifiedName(namespaceAndName))).thenReturn(typeMock);
|
||||||
|
EdmTerm localTerm = new EdmTermImpl(edm, "namespace", csdlTerm);
|
||||||
|
assertNotNull(localTerm.getType());
|
||||||
|
assertEquals(name, localTerm.getType().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void termWithEntityType() {
|
||||||
|
CsdlTerm csdlTerm = new CsdlTerm();
|
||||||
|
FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1");
|
||||||
|
csdlTerm.setName(csdlTerm1Name.getName());
|
||||||
|
String namespaceAndName = "mySchema.Entity";
|
||||||
|
String name = "Entity";
|
||||||
|
csdlTerm.setType(namespaceAndName);
|
||||||
|
Edm edm = mock(Edm.class);
|
||||||
|
EdmEntityType typeMock = mock(EdmEntityType.class);
|
||||||
|
when(typeMock.getName()).thenReturn(name);
|
||||||
|
when(edm.getEntityType(new FullQualifiedName(namespaceAndName))).thenReturn(typeMock);
|
||||||
|
EdmTerm localTerm = new EdmTermImpl(edm, "namespace", csdlTerm);
|
||||||
|
assertNotNull(localTerm.getType());
|
||||||
|
assertEquals(name, localTerm.getType().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void invalidType() {
|
||||||
|
CsdlTerm csdlTerm = new CsdlTerm();
|
||||||
|
FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1");
|
||||||
|
csdlTerm.setName(csdlTerm1Name.getName());
|
||||||
|
csdlTerm.setType("invalid.invalid");
|
||||||
|
EdmTerm localTerm = new EdmTermImpl(mock(Edm.class), "namespace", csdlTerm);
|
||||||
|
try {
|
||||||
|
localTerm.getType();
|
||||||
|
fail("Expected an EdmException");
|
||||||
|
} catch (EdmException e) {
|
||||||
|
assertEquals("Cannot find type with name: invalid.invalid", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void invalidAppliesToContent() {
|
||||||
|
CsdlTerm csdlTerm = new CsdlTerm();
|
||||||
|
FullQualifiedName csdlTerm1Name = new FullQualifiedName("namespace", "name1");
|
||||||
|
csdlTerm.setName(csdlTerm1Name.getName());
|
||||||
|
csdlTerm.setType("Edm.String");
|
||||||
|
csdlTerm.setAppliesTo(Arrays.asList("Invalid"));
|
||||||
|
EdmTerm localTerm = new EdmTermImpl(mock(Edm.class), "namespace", csdlTerm);
|
||||||
|
|
||||||
|
try {
|
||||||
|
localTerm.getAppliesTo();
|
||||||
|
fail("Expected an EdmException");
|
||||||
|
} catch (EdmException e) {
|
||||||
|
assertEquals("Invalid AppliesTo value: Invalid", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ package org.apache.olingo.server.core.edm.provider;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import org.apache.olingo.commons.api.edm.EdmException;
|
import org.apache.olingo.commons.api.edm.EdmException;
|
||||||
|
@ -46,6 +47,7 @@ public class EdmTypeDefinitionImplTest {
|
||||||
|
|
||||||
assertEquals("name", typeDefImpl.getName());
|
assertEquals("name", typeDefImpl.getName());
|
||||||
assertEquals("namespace", typeDefImpl.getNamespace());
|
assertEquals("namespace", typeDefImpl.getNamespace());
|
||||||
|
assertEquals(new FullQualifiedName("namespace.name"), typeDefImpl.getFullQualifiedName());
|
||||||
assertEquals(String.class, typeDefImpl.getDefaultType());
|
assertEquals(String.class, typeDefImpl.getDefaultType());
|
||||||
assertEquals(EdmTypeKind.DEFINITION, typeDefImpl.getKind());
|
assertEquals(EdmTypeKind.DEFINITION, typeDefImpl.getKind());
|
||||||
assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String), typeDefImpl.getUnderlyingType());
|
assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.String), typeDefImpl.getUnderlyingType());
|
||||||
|
@ -63,15 +65,34 @@ public class EdmTypeDefinitionImplTest {
|
||||||
assertNull(typeDefImpl.getPrecision());
|
assertNull(typeDefImpl.getPrecision());
|
||||||
assertNull(typeDefImpl.getScale());
|
assertNull(typeDefImpl.getScale());
|
||||||
assertTrue(typeDefImpl.isUnicode());
|
assertTrue(typeDefImpl.isUnicode());
|
||||||
|
assertNull(typeDefImpl.getSrid());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = EdmException.class)
|
@Test
|
||||||
public void invalidTypeResultsInEdmException() throws Exception {
|
public void invalidTypeResultsInEdmException() throws Exception {
|
||||||
FullQualifiedName typeDefName = new FullQualifiedName("namespace", "name");
|
FullQualifiedName typeDefName = new FullQualifiedName("namespace", "name");
|
||||||
CsdlTypeDefinition providerTypeDef =
|
CsdlTypeDefinition providerTypeDef =
|
||||||
new CsdlTypeDefinition().setName("typeDef").setUnderlyingType(new FullQualifiedName("wrong", "wrong"));
|
new CsdlTypeDefinition().setName("typeDef").setUnderlyingType(new FullQualifiedName("wrong", "wrong"));
|
||||||
EdmTypeDefinitionImpl def = new EdmTypeDefinitionImpl(mock(EdmProviderImpl.class), typeDefName, providerTypeDef);
|
EdmTypeDefinitionImpl def = new EdmTypeDefinitionImpl(mock(EdmProviderImpl.class), typeDefName, providerTypeDef);
|
||||||
def.getUnderlyingType();
|
try {
|
||||||
|
def.getUnderlyingType();
|
||||||
|
fail("Expected an EdmException");
|
||||||
|
} catch (EdmException e) {
|
||||||
|
assertEquals("Invalid underlying type: wrong.wrong", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void nullTypeResultsInEdmException() throws Exception {
|
||||||
|
FullQualifiedName typeDefName = new FullQualifiedName("namespace", "name");
|
||||||
|
CsdlTypeDefinition providerTypeDef = new CsdlTypeDefinition().setName("typeDef");
|
||||||
|
EdmTypeDefinitionImpl def = new EdmTypeDefinitionImpl(mock(EdmProviderImpl.class), typeDefName, providerTypeDef);
|
||||||
|
try {
|
||||||
|
def.getUnderlyingType();
|
||||||
|
fail("Expected an EdmException");
|
||||||
|
} catch (EdmException e) {
|
||||||
|
assertEquals("Underlying Type for type definition: namespace.name must not be null.", e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue