From 9198be72ed318ed2360c0aab30a2fda4c27b87c0 Mon Sep 17 00:00:00 2001 From: Renaud Paquay Date: Sun, 18 Jul 2010 15:09:10 -0700 Subject: [PATCH] Create ToAppRelative wrapper in IVirtualPathProvider --HG-- branch : dev --- src/Orchard.Tests/Stubs/StubVirtualPathProvider.cs | 4 ++++ .../Extensions/Loaders/DynamicExtensionLoader.cs | 5 ++--- .../FileSystems/VirtualPath/DefaultVirtualPathProvider.cs | 8 ++++++-- .../FileSystems/VirtualPath/IVirtualPathProvider.cs | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Orchard.Tests/Stubs/StubVirtualPathProvider.cs b/src/Orchard.Tests/Stubs/StubVirtualPathProvider.cs index 89a70f94e..cd07da455 100644 --- a/src/Orchard.Tests/Stubs/StubVirtualPathProvider.cs +++ b/src/Orchard.Tests/Stubs/StubVirtualPathProvider.cs @@ -29,6 +29,10 @@ namespace Orchard.Tests.Stubs { return Path.Combine(paths).Replace(Path.DirectorySeparatorChar, '/'); } + public string ToAppRelative(string virtualPath) { + return "~/" + ToFileSystemPath(virtualPath); + } + public string MapPath(string virtualPath) { throw new NotImplementedException("Mapping to a physical file is not supported in Unit Test with this stub."); } diff --git a/src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs b/src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs index d2bd49de5..69166116e 100644 --- a/src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs +++ b/src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs @@ -48,10 +48,9 @@ namespace Orchard.Environment.Extensions.Loaders { } public override IEnumerable GetFileDependencies(DependencyDescriptor dependency, string virtualPath){ - var path1 = virtualPath.StartsWith("~") ? virtualPath : "~" + virtualPath; - var path2 = dependency.VirtualPath.StartsWith("~") ? dependency.VirtualPath : "~" + dependency.VirtualPath; + virtualPath = _virtualPathProvider.ToAppRelative(virtualPath); - if (StringComparer.OrdinalIgnoreCase.Equals(path1, path2)) { + if (StringComparer.OrdinalIgnoreCase.Equals(virtualPath, dependency.VirtualPath)) { return GetSourceFiles(virtualPath); } return base.GetFileDependencies(dependency, virtualPath); diff --git a/src/Orchard/FileSystems/VirtualPath/DefaultVirtualPathProvider.cs b/src/Orchard/FileSystems/VirtualPath/DefaultVirtualPathProvider.cs index 6c3892b7d..9cd99d6c9 100644 --- a/src/Orchard/FileSystems/VirtualPath/DefaultVirtualPathProvider.cs +++ b/src/Orchard/FileSystems/VirtualPath/DefaultVirtualPathProvider.cs @@ -17,7 +17,7 @@ namespace Orchard.FileSystems.VirtualPath { .GetDirectory(path) .Files .OfType() - .Select(f => VirtualPathUtility.ToAppRelative(f.VirtualPath)); + .Select(f => ToAppRelative(f.VirtualPath)); } public IEnumerable ListDirectories(string path) { @@ -26,13 +26,17 @@ namespace Orchard.FileSystems.VirtualPath { .GetDirectory(path) .Directories .OfType() - .Select(d => VirtualPathUtility.ToAppRelative(d.VirtualPath)); + .Select(d => ToAppRelative(d.VirtualPath)); } public string Combine(params string[] paths) { return Path.Combine(paths).Replace(Path.DirectorySeparatorChar, '/'); } + public string ToAppRelative(string virtualPath) { + return VirtualPathUtility.ToAppRelative(virtualPath); + } + public Stream OpenFile(string virtualPath) { return HostingEnvironment.VirtualPathProvider.GetFile(virtualPath).Open(); } diff --git a/src/Orchard/FileSystems/VirtualPath/IVirtualPathProvider.cs b/src/Orchard/FileSystems/VirtualPath/IVirtualPathProvider.cs index 6b012cd75..d7d2d0b29 100644 --- a/src/Orchard/FileSystems/VirtualPath/IVirtualPathProvider.cs +++ b/src/Orchard/FileSystems/VirtualPath/IVirtualPathProvider.cs @@ -6,6 +6,7 @@ using Orchard.Caching; namespace Orchard.FileSystems.VirtualPath { public interface IVirtualPathProvider : IVolatileProvider { string Combine(params string[] paths); + string ToAppRelative(string virtualPath); string MapPath(string virtualPath); bool FileExists(string virtualPath);