diff --git a/src/Umbraco.Core/IO/FileSystemProviderAttribute.cs b/src/Umbraco.Core/IO/FileSystemProviderAttribute.cs index 39bb8db8dc..f94cee537d 100644 --- a/src/Umbraco.Core/IO/FileSystemProviderAttribute.cs +++ b/src/Umbraco.Core/IO/FileSystemProviderAttribute.cs @@ -5,12 +5,11 @@ using System.Text; using Umbraco.Core.CodeAnnotations; namespace Umbraco.Core.IO -{ - [UmbracoExperimentalFeature("http://issues.umbraco.org/issue/U4-1156", "Will be declared public after 4.10")] +{ [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] - internal class FileSystemProviderAttribute : Attribute + public class FileSystemProviderAttribute : Attribute { - public string Alias { get; set; } + public string Alias { get; private set; } public FileSystemProviderAttribute(string alias) { diff --git a/src/Umbraco.Core/IO/FileSystemProvider.cs b/src/Umbraco.Core/IO/FileSystemProviderConstants.cs similarity index 56% rename from src/Umbraco.Core/IO/FileSystemProvider.cs rename to src/Umbraco.Core/IO/FileSystemProviderConstants.cs index 1f6013078f..a447c4df8e 100644 --- a/src/Umbraco.Core/IO/FileSystemProvider.cs +++ b/src/Umbraco.Core/IO/FileSystemProviderConstants.cs @@ -6,8 +6,7 @@ using Umbraco.Core.CodeAnnotations; namespace Umbraco.Core.IO { - [UmbracoExperimentalFeature("http://issues.umbraco.org/issue/U4-1156", "Will be declared public after 4.10")] - internal class FileSystemProvider + internal class FileSystemProviderConstants { public const string Media = "media"; } diff --git a/src/Umbraco.Core/IO/FileSystemProviderManager.cs b/src/Umbraco.Core/IO/FileSystemProviderManager.cs index 5654e764d6..cb18454fb8 100644 --- a/src/Umbraco.Core/IO/FileSystemProviderManager.cs +++ b/src/Umbraco.Core/IO/FileSystemProviderManager.cs @@ -9,9 +9,8 @@ using Umbraco.Core.CodeAnnotations; using Umbraco.Core.Configuration; namespace Umbraco.Core.IO -{ - [UmbracoExperimentalFeature("http://issues.umbraco.org/issue/U4-1156", "Will be declared public after 4.10")] - internal class FileSystemProviderManager +{ + public class FileSystemProviderManager { private readonly FileSystemProvidersSection _config; @@ -28,7 +27,7 @@ namespace Umbraco.Core.IO #region Constructors - public FileSystemProviderManager() + internal FileSystemProviderManager() { _config = (FileSystemProvidersSection)ConfigurationManager.GetSection("FileSystemProviders"); } @@ -48,7 +47,15 @@ namespace Umbraco.Core.IO private readonly ConcurrentDictionary _providerLookup = new ConcurrentDictionary(); private readonly ConcurrentDictionary _wrappedProviderLookup = new ConcurrentDictionary(); - public IFileSystem GetFileSystemProvider(string alias) + /// + /// Returns the underlying (non-typed) file system provider for the alias specified + /// + /// + /// + /// + /// It is recommended to use the typed GetFileSystemProvider method instead to get a strongly typed provider instance. + /// + public IFileSystem GetUnderlyingFileSystemProvider(string alias) { //either get the constructor info from cache or create it and add to cache var ctorInfo = _providerLookup.GetOrAdd(alias, s => @@ -88,6 +95,11 @@ namespace Umbraco.Core.IO return fs; } + /// + /// Returns the strongly typed file system provider + /// + /// + /// public TProviderTypeFilter GetFileSystemProvider() where TProviderTypeFilter : FileSystemWrapper { @@ -111,7 +123,7 @@ namespace Umbraco.Core.IO return attr.Alias; }); - var innerFs = GetFileSystemProvider(alias); + var innerFs = GetUnderlyingFileSystemProvider(alias); var outputFs = Activator.CreateInstance(typeof (TProviderTypeFilter), innerFs); return (TProviderTypeFilter)outputFs; } diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 3e4320b356..4b8af40d09 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -150,7 +150,7 @@ - + diff --git a/src/Umbraco.Tests/IO/FileSystemProviderManagerTests.cs b/src/Umbraco.Tests/IO/FileSystemProviderManagerTests.cs index 28706303d3..48d5819ebb 100644 --- a/src/Umbraco.Tests/IO/FileSystemProviderManagerTests.cs +++ b/src/Umbraco.Tests/IO/FileSystemProviderManagerTests.cs @@ -14,7 +14,7 @@ namespace Umbraco.Tests.IO [Test] public void Can_Get_Base_File_System() { - var fs = FileSystemProviderManager.Current.GetFileSystemProvider(FileSystemProvider.Media); + var fs = FileSystemProviderManager.Current.GetUnderlyingFileSystemProvider(FileSystemProviderConstants.Media); Assert.NotNull(fs); }