Example #1
0
        internal void RegisterResourceProperty(MongoContext context, ResourceType resourceType, BsonElement element)
        {
            var collectionProperty = new CollectionProperty {
                CollectionType = resourceType, PropertyName = element.Name
            };
            var resourceProperty = ResolveResourceProperty(resourceType, element);

            if (resourceProperty == null)
            {
                lock (unresolvedProperties)
                {
                    var unresolvedEarlier = unresolvedProperties.Contains(collectionProperty);
                    var resolvedNow       = ResolveProviderType(element.Value, IsObjectId(element)) != null;

                    if (!unresolvedEarlier && !resolvedNow)
                    {
                        this.unresolvedProperties.Add(collectionProperty);
                    }
                    else if (unresolvedEarlier && resolvedNow)
                    {
                        this.unresolvedProperties.Remove(collectionProperty);
                    }

                    if (resolvedNow)
                    {
                        AddResourceProperty(context, resourceType.Name, resourceType, element, resourceType.ResourceTypeKind == ResourceTypeKind.EntityType);
                    }
                }
            }
        }
Example #2
0
        internal void RegisterResourceProperty(MongoContext context, ResourceType resourceType, BsonElement element)
        {
            var collectionProperty = new CollectionProperty { CollectionType = resourceType, PropertyName = element.Name };
            var resourceProperty = ResolveResourceProperty(resourceType, element);
            if (resourceProperty == null)
            {
                lock (_unresolvedProperties)
                {
                    var unresolvedEarlier = _unresolvedProperties.Contains(collectionProperty);
                    var resolvedNow = ResolveProviderType(element.Value, IsObjectId(element)) != null;

                    if (!unresolvedEarlier && !resolvedNow)
                        _unresolvedProperties.Add(collectionProperty);
                    else if (unresolvedEarlier && resolvedNow)
                        _unresolvedProperties.Remove(collectionProperty);

                    if (resolvedNow)
                    {
                        AddResourceProperty(context, resourceType.Name, resourceType, element, resourceType.ResourceTypeKind == ResourceTypeKind.EntityType);
                    }
                }
            }
        }