diff --git a/src/Microsoft.OData.Edm/Csdl/SerializationExtensionMethods.cs b/src/Microsoft.OData.Edm/Csdl/SerializationExtensionMethods.cs index 0c5ba2c453..ab7411361a 100644 --- a/src/Microsoft.OData.Edm/Csdl/SerializationExtensionMethods.cs +++ b/src/Microsoft.OData.Edm/Csdl/SerializationExtensionMethods.cs @@ -270,8 +270,15 @@ public static void SetNamespaceAlias(this IEdmModel model, string namespaceName, /// The alias of the given namespace, or null if one does not exist. public static string GetNamespaceAlias(this IEdmModel model, string namespaceName) { + EdmUtil.CheckArgumentNull(model, "model"); VersioningDictionary mappings = model.GetAnnotationValue>(model, EdmConstants.InternalUri, CsdlConstants.NamespaceAliasAnnotation); - return mappings.Get(namespaceName); + string namespaceAlias; + if (mappings != null && mappings.TryGetValue(namespaceName, out namespaceAlias)) + { + return namespaceAlias; + } + + return null; } // This internal method exists so we can get a consistent view of the mappings through the entire serialization process. diff --git a/test/FunctionalTests/Microsoft.OData.Edm.Tests/ExtensionMethods/ExtensionMethodTests.cs b/test/FunctionalTests/Microsoft.OData.Edm.Tests/ExtensionMethods/ExtensionMethodTests.cs index 2d2cd602fc..dd32c6c742 100644 --- a/test/FunctionalTests/Microsoft.OData.Edm.Tests/ExtensionMethods/ExtensionMethodTests.cs +++ b/test/FunctionalTests/Microsoft.OData.Edm.Tests/ExtensionMethods/ExtensionMethodTests.cs @@ -937,6 +937,26 @@ public void FindTypeForUndefinedTypeDoesnotGetIntoInfiniteSearchLoop() Assert.Null(unknownType); } + [Fact] + public void GetNamespaceAliasReturnsNullForNamespaceWithoutAlias() + { + Assert.Null(TestModel.Instance.Model.GetNamespaceAlias("SomeNamespace.NotIn.Model")); + } + + [Fact] + public void GetNamespaceAliasReturnsNullForModelsWithoutAliases() + { + EdmModel model = new EdmModel(false); + Assert.Null(model.GetNamespaceAlias("SomeNamespace")); + } + + [Fact] + public void GetNamespaceAliasForNamespaceWithAlias() + { + Assert.Equal(TestModel.TestModelAlias, TestModel.Instance.Model.GetNamespaceAlias(TestModel.TestModelNameSpace)); + Assert.Equal(TestModel.TestModelAlias2, TestModel.Instance.Model.GetNamespaceAlias(TestModel.TestModelNameSpace2)); + } + internal class TestModel { public static TestModel Instance = new TestModel();