public static DSPResource CreateDSPResource(BsonDocument document, MongoMetadata mongoMetadata, string resourceName, string ownerPrefix = null)
{
var resourceType = mongoMetadata.ResolveResourceType(resourceName, ownerPrefix);
if (resourceType == null)
{
throw new ArgumentException(string.Format("Unable to resolve resource type {0}", resourceName), "resourceName");
}
var resource = new DSPResource(resourceType);
foreach (var element in document.Elements)
{
var resourceProperty = mongoMetadata.ResolveResourceProperty(resourceType, element);
if (resourceProperty == null)
{
continue;
}
object propertyValue = ConvertBsonValue(element.Value, resourceType, resourceProperty, resourceProperty.Name, mongoMetadata);
resource.SetValue(resourceProperty.Name, propertyValue);
}
AssignNullCollections(resource, resourceType);
return(resource);
}