/// <summary> /// Add a new API resource location /// </summary> /// <param name="location">API resource location to add</param> public void AddResourceLocation(ApiResourceLocation location) { ApiResourceLocation existingLocation; if (m_locationsById.TryGetValue(location.Id, out existingLocation)) { if (!location.Equals(existingLocation)) // unit tests will register same resources multiple times, so only throw if the ApiResourceLocation doesn't match what is already cached. { throw new VssApiResourceDuplicateIdException(location.Id); } } m_locationsById[location.Id] = location; List <ApiResourceLocation> locationsByKey; String locationCacheKey = GetLocationCacheKey(location.Area, location.ResourceName); if (!m_locationsByKey.TryGetValue(locationCacheKey, out locationsByKey)) { locationsByKey = new List <ApiResourceLocation>(); m_locationsByKey.Add(locationCacheKey, locationsByKey); } if (!locationsByKey.Any(x => x.Id.Equals(location.Id))) { locationsByKey.Add(location); } }
/// <summary> /// Get an API resource location by location id. Throws if not found. /// </summary> /// <param name="locationId">Id of the registered resource location</param> /// <returns>ApiResourceLocation or null if not found</returns> public ApiResourceLocation GetLocationById(Guid locationId) { ApiResourceLocation location = TryGetLocationById(locationId); if (location == null) { throw new VssResourceNotFoundException(locationId); } return(location); }
public VssVersionNotSupportedException(ApiResourceLocation location, Version requestedVersion, Version minSupportedVersion, Uri serverBaseUri) : base(WebApiResources.ClientResourceVersionNotSupported(location.Area + ":" + location.ResourceName + " " + location.Id, requestedVersion, serverBaseUri, minSupportedVersion)) { }