Browse Source

Refactored virtual file system #4528

pull/4540/head
Halil İbrahim Kalkan 6 years ago
parent
commit
d8f7b581c3
  1. 4
      framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/AbpEmbeddedFileProvider.cs
  2. 22
      framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/EmbeddedVirtualFileSetInfo.cs
  3. 10
      framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/IVirtualFileSet.cs
  4. 19
      framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Physical/PhysicalVirtualFileSetInfo.cs
  5. 2
      framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFilePathHelper.cs
  6. 28
      framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFileSetInfo.cs
  7. 24
      framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFileSetListExtensions.cs

4
framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/EmbeddedFileSet.cs → framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/AbpEmbeddedFileProvider.cs

@ -8,7 +8,7 @@ using Microsoft.Extensions.FileProviders;
namespace Volo.Abp.VirtualFileSystem.Embedded
{
public class EmbeddedFileSet : DictionaryBasedFileProvider
public class AbpEmbeddedFileProvider : DictionaryBasedFileProvider
{
[NotNull]
public Assembly Assembly { get; }
@ -19,7 +19,7 @@ namespace Volo.Abp.VirtualFileSystem.Embedded
protected override IDictionary<string, IFileInfo> Files => _files.Value;
private readonly Lazy<Dictionary<string, IFileInfo>> _files;
public EmbeddedFileSet(
public AbpEmbeddedFileProvider(
[NotNull] Assembly assembly,
[CanBeNull] string baseNamespace = null)
{

22
framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/EmbeddedVirtualFileSetInfo.cs

@ -0,0 +1,22 @@
using System.Reflection;
using Microsoft.Extensions.FileProviders;
namespace Volo.Abp.VirtualFileSystem.Embedded
{
public class EmbeddedVirtualFileSetInfo : VirtualFileSetInfo
{
public Assembly Assembly { get; }
public string BaseFolder { get; }
public EmbeddedVirtualFileSetInfo(
IFileProvider fileProvider,
Assembly assembly,
string baseFolder = null)
: base(fileProvider)
{
Assembly = assembly;
BaseFolder = baseFolder;
}
}
}

10
framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/IVirtualFileSet.cs

@ -1,10 +0,0 @@
using System.Collections.Generic;
using Microsoft.Extensions.FileProviders;
namespace Volo.Abp.VirtualFileSystem
{
public interface IVirtualFileSet
{
void AddFiles(Dictionary<string, IFileInfo> files);
}
}

19
framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Physical/PhysicalVirtualFileSetInfo.cs

@ -0,0 +1,19 @@
using JetBrains.Annotations;
using Microsoft.Extensions.FileProviders;
namespace Volo.Abp.VirtualFileSystem.Physical
{
public class PhysicalVirtualFileSetInfo : VirtualFileSetInfo
{
public string Root { get; }
public PhysicalVirtualFileSetInfo(
[NotNull] IFileProvider fileProvider,
[NotNull] string root
)
: base(fileProvider)
{
Root = Check.NotNullOrWhiteSpace(root, nameof(root));
}
}
}

2
framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFilePathHelper.cs

@ -6,8 +6,6 @@ namespace Volo.Abp.VirtualFileSystem
{
internal static class VirtualFilePathHelper
{
//TODO: Optimize this class!
public static string NormalizePath(string fullPath)
{
if (fullPath.Equals("/", StringComparison.Ordinal))

28
framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFileSetInfo.cs

@ -1,35 +1,15 @@
using System.IO;
using System.Reflection;
using JetBrains.Annotations;
using Microsoft.Extensions.FileProviders;
namespace Volo.Abp.VirtualFileSystem
{
public class VirtualFileSetInfo
{
public IFileProvider FileProvider
{
get => _fileProvider;
set => _fileProvider = Check.NotNull(value, nameof(value));
}
private IFileProvider _fileProvider;
public VirtualFileSetInfo(IFileProvider fileProvider)
{
FileProvider = fileProvider;
}
}
public class EmbeddedVirtualFileSetInfo : VirtualFileSetInfo
{
public Assembly Assembly { get; }
public string BaseFolder { get; }
public IFileProvider FileProvider { get; }
public EmbeddedVirtualFileSetInfo(IFileProvider fileProvider, Assembly assembly, string baseFolder = null)
: base(fileProvider)
public VirtualFileSetInfo([NotNull] IFileProvider fileProvider)
{
Assembly = assembly;
BaseFolder = baseFolder;
FileProvider = Check.NotNull(fileProvider, nameof(fileProvider));
}
}
}

24
framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/VirtualFileSetListExtensions.cs

@ -3,7 +3,9 @@ using System.IO;
using System.Reflection;
using JetBrains.Annotations;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.FileProviders.Physical;
using Volo.Abp.VirtualFileSystem.Embedded;
using Volo.Abp.VirtualFileSystem.Physical;
namespace Volo.Abp.VirtualFileSystem
{
@ -26,6 +28,18 @@ namespace Volo.Abp.VirtualFileSystem
list.Add(new EmbeddedVirtualFileSetInfo(fileProvider, assembly, baseFolder));
}
public static void AddPhysical(
[NotNull] this VirtualFileSetList list,
[NotNull] string root,
ExclusionFilters exclusionFilters = ExclusionFilters.Sensitive)
{
Check.NotNull(list, nameof(list));
Check.NotNullOrWhiteSpace(root, nameof(root));
var fileProvider = new PhysicalFileProvider(root, exclusionFilters);
list.Add(new PhysicalVirtualFileSetInfo(fileProvider, root));
}
private static IFileProvider CreateFileProvider(
[NotNull] Assembly assembly,
[CanBeNull] string baseNamespace = null,
@ -37,7 +51,7 @@ namespace Volo.Abp.VirtualFileSystem
if (info == null)
{
return new EmbeddedFileSet(assembly, baseNamespace);
return new AbpEmbeddedFileProvider(assembly, baseNamespace);
}
if (baseFolder == null)
@ -50,10 +64,10 @@ namespace Volo.Abp.VirtualFileSystem
public static void ReplaceEmbeddedByPhysical<T>(
[NotNull] this VirtualFileSetList fileSets,
[NotNull] string pyhsicalPath)
[NotNull] string physicalPath)
{
Check.NotNull(fileSets, nameof(fileSets));
Check.NotNullOrWhiteSpace(pyhsicalPath, nameof(pyhsicalPath));
Check.NotNullOrWhiteSpace(physicalPath, nameof(physicalPath));
var assembly = typeof(T).Assembly;
@ -62,14 +76,14 @@ namespace Volo.Abp.VirtualFileSystem
if (fileSets[i] is EmbeddedVirtualFileSetInfo embeddedVirtualFileSet &&
embeddedVirtualFileSet.Assembly == assembly)
{
var thisPath = pyhsicalPath;
var thisPath = physicalPath;
if (!embeddedVirtualFileSet.BaseFolder.IsNullOrEmpty())
{
thisPath = Path.Combine(thisPath, embeddedVirtualFileSet.BaseFolder);
}
fileSets[i] = new VirtualFileSetInfo(new PhysicalFileProvider(thisPath));
fileSets[i] = new PhysicalVirtualFileSetInfo(new PhysicalFileProvider(thisPath), thisPath);
}
}
}

Loading…
Cancel
Save