Fixes PhysicalFileSystem to use IOHelper instead of HostingEnvironment. Removes all references to new IFileSystem's that canont be supported currently, leaving only the media file system.

Updates all code to use PhysicalFileSystem in place of what 'could' eventually be an abstracted IFileSystem. Updates unit tests
accordingly.
This commit is contained in:
Shannon Deminick
2013-01-14 03:04:09 +03:00
parent 880cafb0a9
commit 98a171266e
11 changed files with 48 additions and 93 deletions

View File

@@ -18,7 +18,7 @@ namespace Umbraco.Core.IO
public PhysicalFileSystem(string virtualRoot)
{
RootPath = System.Web.Hosting.HostingEnvironment.MapPath(virtualRoot);
RootPath = IOHelper.MapPath(virtualRoot);
_rootUrl = VirtualPathUtility.ToAbsolute(virtualRoot);
}

View File

@@ -33,8 +33,8 @@ namespace Umbraco.Core.Persistence.Repositories
}
private void EnsureDependencies()
{
_fileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("macros");
{
_fileSystem = new PhysicalFileSystem("~/App_Data/Macros");
var serviceStackSerializer = new ServiceStackJsonSerializer();
_serializationService = new SerializationService(serviceStackSerializer);
}

View File

@@ -14,8 +14,13 @@ namespace Umbraco.Core.Persistence.Repositories
/// </summary>
internal class ScriptRepository : FileRepository<string, Script>, IScriptRepository
{
public ScriptRepository(IUnitOfWork work, IFileSystem fileSystem)
: base(work, fileSystem)
{
}
public ScriptRepository(IUnitOfWork work)
: base(work, FileSystemProviderManager.Current.GetFileSystemProvider("scripts"))
: this(work, new PhysicalFileSystem(SystemDirectories.Scripts))
{
}

View File

@@ -14,8 +14,14 @@ namespace Umbraco.Core.Persistence.Repositories
/// </summary>
internal class StylesheetRepository : FileRepository<string, Stylesheet>, IStylesheetRepository
{
public StylesheetRepository(IUnitOfWork work, IFileSystem fileSystem)
: base(work, fileSystem)
{
}
public StylesheetRepository(IUnitOfWork work)
: base(work, FileSystemProviderManager.Current.GetFileSystemProvider("stylesheets"))
: this(work, new PhysicalFileSystem(SystemDirectories.Css))
{
}

View File

@@ -44,8 +44,8 @@ namespace Umbraco.Core.Persistence.Repositories
private void EnsureDepedencies()
{
_masterpagesFileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("masterpages");
_viewsFileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("views");
_masterpagesFileSystem = new PhysicalFileSystem(SystemDirectories.Masterpages);
_viewsFileSystem = new PhysicalFileSystem(SystemDirectories.MvcViews);
}
#region Overrides of RepositoryBase<int,ITemplate>

View File

@@ -94,7 +94,7 @@ namespace Umbraco.Tests.Models
// Arrange
var serviceStackSerializer = new ServiceStackJsonSerializer();
var serializationService = new SerializationService(serviceStackSerializer);
var fileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("macros");
var fileSystem = new PhysicalFileSystem("~/App_Data/Macros");
var macro = new Macro
{
@@ -128,7 +128,7 @@ namespace Umbraco.Tests.Models
// Arrange
var serviceStackSerializer = new ServiceStackJsonSerializer();
var serializationService = new SerializationService(serviceStackSerializer);
var fileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("macros");
var fileSystem = new PhysicalFileSystem("~/App_Data/Macros");
var macro = new Macro
{

View File

@@ -17,7 +17,7 @@ namespace Umbraco.Tests.Persistence.Repositories
[SetUp]
public void Initialize()
{
_fileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("scripts");
_fileSystem = new PhysicalFileSystem(SystemDirectories.Scripts, "/scripts");
var stream = CreateStream("Umbraco.Sys.registerNamespace(\"Umbraco.Utils\");");
_fileSystem.AddFile("test-script.js", stream);
}
@@ -30,7 +30,7 @@ namespace Umbraco.Tests.Persistence.Repositories
var unitOfWork = provider.GetUnitOfWork();
// Act
var repository = new ScriptRepository(unitOfWork);
var repository = new ScriptRepository(unitOfWork, _fileSystem);
// Assert
Assert.That(repository, Is.Not.Null);
@@ -42,7 +42,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new ScriptRepository(unitOfWork);
var repository = new ScriptRepository(unitOfWork, _fileSystem);
// Act
var script = new Script("test-add-script.js") {Content = "/// <reference name=\"MicrosoftAjax.js\"/>"};
@@ -59,7 +59,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new ScriptRepository(unitOfWork);
var repository = new ScriptRepository(unitOfWork, _fileSystem);
// Act
var script = new Script("test-updated-script.js") { Content = "/// <reference name=\"MicrosoftAjax.js\"/>" };
@@ -83,7 +83,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new ScriptRepository(unitOfWork);
var repository = new ScriptRepository(unitOfWork, _fileSystem);
// Act
var script = repository.Get("test-script.js");
@@ -100,7 +100,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new ScriptRepository(unitOfWork);
var repository = new ScriptRepository(unitOfWork, _fileSystem);
// Act
var exists = repository.Get("test-script.js");
@@ -117,7 +117,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new ScriptRepository(unitOfWork);
var repository = new ScriptRepository(unitOfWork, _fileSystem);
var script = new Script("test-script1.js") { Content = "/// <reference name=\"MicrosoftAjax.js\"/>" };
repository.AddOrUpdate(script);
@@ -143,7 +143,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new ScriptRepository(unitOfWork);
var repository = new ScriptRepository(unitOfWork, _fileSystem);
var script = new Script("test-script1.js") { Content = "/// <reference name=\"MicrosoftAjax.js\"/>" };
repository.AddOrUpdate(script);
@@ -169,7 +169,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new ScriptRepository(unitOfWork);
var repository = new ScriptRepository(unitOfWork, _fileSystem);
// Act
var exists = repository.Exists("test-script.js");
@@ -183,7 +183,7 @@ namespace Umbraco.Tests.Persistence.Repositories
{
_fileSystem = null;
//Delete all files
var fs = FileSystemProviderManager.Current.GetFileSystemProvider("scripts");
var fs = new PhysicalFileSystem(SystemDirectories.Scripts, "/scripts");
var files = fs.GetFiles("", "*.js");
foreach (var file in files)
{

View File

@@ -17,7 +17,7 @@ namespace Umbraco.Tests.Persistence.Repositories
[SetUp]
public void Initialize()
{
_fileSystem = FileSystemProviderManager.Current.GetFileSystemProvider("stylesheets");
_fileSystem = new PhysicalFileSystem(SystemDirectories.Css, "/css");
var stream = CreateStream("body {background:#EE7600; color:#FFF;}");
_fileSystem.AddFile("styles.css", stream);
}
@@ -30,7 +30,7 @@ namespace Umbraco.Tests.Persistence.Repositories
var unitOfWork = provider.GetUnitOfWork();
// Act
var repository = new StylesheetRepository(unitOfWork);
var repository = new StylesheetRepository(unitOfWork, _fileSystem);
// Assert
Assert.That(repository, Is.Not.Null);
@@ -42,7 +42,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new StylesheetRepository(unitOfWork);
var repository = new StylesheetRepository(unitOfWork, _fileSystem);
// Act
var stylesheet = new Stylesheet("test-add.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
@@ -59,7 +59,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new StylesheetRepository(unitOfWork);
var repository = new StylesheetRepository(unitOfWork, _fileSystem);
// Act
var stylesheet = new Stylesheet("test-update.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
@@ -85,7 +85,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new StylesheetRepository(unitOfWork);
var repository = new StylesheetRepository(unitOfWork, _fileSystem);
// Act
var stylesheet = new Stylesheet("test-delete.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
@@ -105,7 +105,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new StylesheetRepository(unitOfWork);
var repository = new StylesheetRepository(unitOfWork, _fileSystem);
// Act
var stylesheet = repository.Get("styles.css");
@@ -123,7 +123,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new StylesheetRepository(unitOfWork);
var repository = new StylesheetRepository(unitOfWork, _fileSystem);
var stylesheet = new Stylesheet("styles-v2.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
repository.AddOrUpdate(stylesheet);
@@ -145,7 +145,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new StylesheetRepository(unitOfWork);
var repository = new StylesheetRepository(unitOfWork, _fileSystem);
var stylesheet = new Stylesheet("styles-v2.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
repository.AddOrUpdate(stylesheet);
@@ -167,7 +167,7 @@ namespace Umbraco.Tests.Persistence.Repositories
// Arrange
var provider = new FileUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = new StylesheetRepository(unitOfWork);
var repository = new StylesheetRepository(unitOfWork, _fileSystem);
// Act
var exists = repository.Exists("styles.css");

View File

@@ -7,33 +7,5 @@
<add key="virtualRoot" value="~/media/" />
</Parameters>
</Provider>
<!-- Macros -->
<Provider alias="macros" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/app_data/macros/" />
</Parameters>
</Provider>
<!-- Scripts -->
<Provider alias="scripts" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/scripts/" />
</Parameters>
</Provider>
<!-- Stylesheets -->
<Provider alias="stylesheets" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/css/" />
</Parameters>
</Provider>
<!-- Templates -->
<Provider alias="masterpages" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/masterpages/" />
</Parameters>
</Provider>
<Provider alias="views" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/views/" />
</Parameters>
</Provider>
</FileSystemProviders>

View File

@@ -7,38 +7,5 @@
<add key="virtualRoot" value="~/media/" />
</Parameters>
</Provider>
<!-- Macros -->
<Provider alias="macros" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/app_data/macros/" />
</Parameters>
</Provider>
<!-- Scripts -->
<Provider alias="scripts" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/scripts/" />
</Parameters>
</Provider>
<!-- Stylesheets -->
<Provider alias="stylesheets" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/css/" />
</Parameters>
</Provider>
<!-- Templates -->
<Provider alias="masterpages" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/masterpages/" />
</Parameters>
</Provider>
<Provider alias="views" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core">
<Parameters>
<add key="virtualRoot" value="~/views/" />
</Parameters>
</Provider>
</FileSystemProviders>

View File

@@ -15,7 +15,7 @@ namespace Umbraco.Web.Mvc
// //return Content("<html><body>hello</body></html>");
// }
// public ActionResult PostVals(string name)
// public ActionResult PostVals(TestFormModel model)
// {
// ModelState.AddModelError("name", "bad name!");
// return CurrentUmbracoPage();
@@ -28,6 +28,11 @@ namespace Umbraco.Web.Mvc
// }
//}
//public class TestFormModel
//{
// public string Name { get; set; }
//}
//public class LocalSurfaceController : SurfaceController
//{
// public ActionResult Index()
@@ -35,9 +40,9 @@ namespace Umbraco.Web.Mvc
// return View();
// }
// public ActionResult PostVals([Bind(Prefix = "blah")]string name)
// public ActionResult PostVals([Bind(Prefix = "blah")]TestFormModel model)
// {
// ModelState.AddModelError("name", "you suck!");
// ModelState.AddModelError("Name", "you suck!");
// return this.RedirectToCurrentUmbracoPage();
// }