public ResourceType LoadType(ResourceTypeReference reference) { var typeLocation = availableTypes[reference]; var serializedResourceType = typeLoader.LoadResourceType(typeLocation); return(resourceTypeFactory.GetResourceType(serializedResourceType)); }
public ResourceTypeComponents LoadType(ResourceTypeReference reference) { var typeLocation = availableTypes[reference]; if (!availableFunctions.TryGetValue(reference.FormatType(), out var apiFunctions) || reference.ApiVersion is null || !apiFunctions.TryGetValue(reference.ApiVersion, out var functions)) { functions = ImmutableArray <TypeLocation> .Empty; } var functionOverloads = functions.SelectMany(typeLocation => resourceTypeFactory.GetResourceFunctionOverloads(typeLoader.LoadResourceFunctionType(typeLocation))); var serializedResourceType = typeLoader.LoadResourceType(typeLocation); return(resourceTypeFactory.GetResourceType(serializedResourceType, functionOverloads)); }
private ResourceType GenerateResourceType(ResourceTypeReference typeReference, bool isExistingResource) { if (availableResourceTypes.TryGetValue(typeReference, out var typeLocation)) { var serializedResourceType = typeLoader.LoadResourceType(typeLocation); var resourceType = resourceTypeFactory.GetResourceType(serializedResourceType); return(SetBicepResourceProperties(resourceType, isExistingResource)); } else { var resourceBodyType = new NamedObjectType(typeReference.FormatName(), TypeSymbolValidationFlags.Default, LanguageConstants.CreateResourceProperties(typeReference), null); var resourceType = new ResourceType(typeReference, ResourceScope.Tenant | ResourceScope.ManagementGroup | ResourceScope.Subscription | ResourceScope.ResourceGroup | ResourceScope.Resource, resourceBodyType); return(SetBicepResourceProperties(resourceType, isExistingResource)); } }
public ResourceType GetType(ResourceTypeReference typeReference) { if (loadedTypeCache.TryGetValue(typeReference, out var resourceType)) { return(resourceType); } if (availableResourceTypes.TryGetValue(typeReference, out var typeLocation)) { // It's important to cache this result because LoadResourceType is an expensive operation, and // duplicating types means the resourceTypeFactor won't be able to use its cache. var serializedResourceType = typeLoader.LoadResourceType(typeLocation); resourceType = resourceTypeFactory.GetResourceType(serializedResourceType); } else { resourceType = new ResourceType(typeReference, new NamedObjectType(typeReference.FormatName(), TypeSymbolValidationFlags.Default, LanguageConstants.CreateResourceProperties(typeReference), null), TypeSymbolValidationFlags.Default); } loadedTypeCache[typeReference] = resourceType; return(resourceType); }