Browse Source

Refactored.

pull/81/head
Halil İbrahim Kalkan 10 years ago
parent
commit
1213bf2233
  1. 5
      src/Volo.Abp/Volo/Abp/Modularity/DependsOnAttribute.cs
  2. 2
      src/Volo.Abp/Volo/Abp/Modularity/IDependedModuleTypesProvider.cs
  3. 7
      src/Volo.Abp/Volo/Abp/Modularity/IModuleLifecycleContributer.cs
  4. 4
      src/Volo.Abp/Volo/Abp/Modularity/IModuleLoader.cs
  5. 2
      src/Volo.Abp/Volo/Abp/Modularity/IModuleManager.cs
  6. 8
      src/Volo.Abp/Volo/Abp/Modularity/ModuleLoader.cs
  7. 10
      src/Volo.Abp/Volo/Abp/Modularity/PlugIns/FolderPlugInSource.cs
  8. 5
      src/Volo.Abp/Volo/Abp/Modularity/PlugIns/IPlugInSource.cs
  9. 9
      src/Volo.Abp/Volo/Abp/Modularity/PlugIns/PlugInSourceExtensions.cs
  10. 6
      src/Volo.Abp/Volo/Abp/Modularity/PlugIns/PlugInSourceList.cs
  11. 9
      src/Volo.Abp/Volo/Abp/Modularity/PlugIns/PlugInSourceListExtensions.cs
  12. 10
      src/Volo.Abp/Volo/Abp/Modularity/PlugIns/PlugInTypeListSource.cs

5
src/Volo.Abp/Volo/Abp/Modularity/DependsOnAttribute.cs

@ -1,4 +1,5 @@
using System; using System;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity namespace Volo.Abp.Modularity
{ {
@ -12,6 +13,7 @@ namespace Volo.Abp.Modularity
/// <summary> /// <summary>
/// Types of depended modules. /// Types of depended modules.
/// </summary> /// </summary>
[NotNull]
public Type[] DependedModuleTypes { get; } public Type[] DependedModuleTypes { get; }
/// <summary> /// <summary>
@ -20,9 +22,10 @@ namespace Volo.Abp.Modularity
/// <param name="dependedModuleTypes">Types of depended modules</param> /// <param name="dependedModuleTypes">Types of depended modules</param>
public DependsOnAttribute(params Type[] dependedModuleTypes) public DependsOnAttribute(params Type[] dependedModuleTypes)
{ {
DependedModuleTypes = dependedModuleTypes; DependedModuleTypes = dependedModuleTypes ?? new Type[0];
} }
[NotNull]
public virtual Type[] GetDependedModuleTypes() public virtual Type[] GetDependedModuleTypes()
{ {
return DependedModuleTypes; return DependedModuleTypes;

2
src/Volo.Abp/Volo/Abp/Modularity/IDependedModuleTypesProvider.cs

@ -1,9 +1,11 @@
using System; using System;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity namespace Volo.Abp.Modularity
{ {
public interface IDependedModuleTypesProvider public interface IDependedModuleTypesProvider
{ {
[NotNull]
Type[] GetDependedModuleTypes(); Type[] GetDependedModuleTypes();
} }
} }

7
src/Volo.Abp/Volo/Abp/Modularity/IModuleLifecycleContributer.cs

@ -1,11 +1,12 @@
using Volo.DependencyInjection; using JetBrains.Annotations;
using Volo.DependencyInjection;
namespace Volo.Abp.Modularity namespace Volo.Abp.Modularity
{ {
public interface IModuleLifecycleContributer : ISingletonDependency public interface IModuleLifecycleContributer : ISingletonDependency
{ {
void Initialize(IAbpModule module); void Initialize([NotNull] IAbpModule module);
void Shutdown(IAbpModule module); void Shutdown([NotNull] IAbpModule module);
} }
} }

4
src/Volo.Abp/Volo/Abp/Modularity/IModuleLoader.cs

@ -1,4 +1,5 @@
using System; using System;
using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity.PlugIns; using Volo.Abp.Modularity.PlugIns;
@ -6,6 +7,7 @@ namespace Volo.Abp.Modularity
{ {
public interface IModuleLoader public interface IModuleLoader
{ {
AbpModuleDescriptor[] LoadModules(IServiceCollection services, Type startupModuleType, PlugInSourceList plugInSources); [NotNull]
AbpModuleDescriptor[] LoadModules([NotNull] IServiceCollection services, [NotNull] Type startupModuleType, [NotNull] PlugInSourceList plugInSources);
} }
} }

2
src/Volo.Abp/Volo/Abp/Modularity/IModuleManager.cs

@ -1,9 +1,11 @@
using System.Collections.Generic; using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity namespace Volo.Abp.Modularity
{ {
public interface IModuleManager public interface IModuleManager
{ {
[NotNull]
IReadOnlyList<AbpModuleDescriptor> Modules { get; } IReadOnlyList<AbpModuleDescriptor> Modules { get; }
void InitializeModules(); void InitializeModules();

8
src/Volo.Abp/Volo/Abp/Modularity/ModuleLoader.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity.PlugIns; using Volo.Abp.Modularity.PlugIns;
using Volo.ExtensionMethods.Collections.Generic; using Volo.ExtensionMethods.Collections.Generic;
@ -9,8 +10,13 @@ namespace Volo.Abp.Modularity
{ {
public class ModuleLoader : IModuleLoader public class ModuleLoader : IModuleLoader
{ {
public AbpModuleDescriptor[] LoadModules(IServiceCollection services, Type startupModuleType, PlugInSourceList plugInSources) [NotNull]
public AbpModuleDescriptor[] LoadModules([NotNull] IServiceCollection services, [NotNull] Type startupModuleType, [NotNull] PlugInSourceList plugInSources)
{ {
Check.NotNull(services, nameof(services));
Check.NotNull(startupModuleType, nameof(startupModuleType));
Check.NotNull(plugInSources, nameof(plugInSources));
var modules = new List<AbpModuleDescriptor>(); var modules = new List<AbpModuleDescriptor>();
FillModules(modules, services, startupModuleType, plugInSources); FillModules(modules, services, startupModuleType, plugInSources);

10
src/Volo.Abp/Volo/Abp/Modularity/PlugIns/FolderPlugInSource.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using JetBrains.Annotations;
using Volo.Abp.Reflection; using Volo.Abp.Reflection;
using Volo.ExtensionMethods.Collections.Generic; using Volo.ExtensionMethods.Collections.Generic;
@ -12,13 +13,16 @@ namespace Volo.Abp.Modularity.PlugIns
public SearchOption SearchOption { get; set; } public SearchOption SearchOption { get; set; }
public FolderPlugInSource(string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly) public FolderPlugInSource([NotNull] string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly)
{ {
Check.NotNull(folder, nameof(folder));
Folder = folder; Folder = folder;
SearchOption = searchOption; SearchOption = searchOption;
} }
public List<Type> GetModules() [NotNull]
public Type[] GetModules()
{ {
var modules = new List<Type>(); var modules = new List<Type>();
@ -41,7 +45,7 @@ namespace Volo.Abp.Modularity.PlugIns
} }
} }
return modules; return modules.ToArray();
} }
} }
} }

5
src/Volo.Abp/Volo/Abp/Modularity/PlugIns/IPlugInSource.cs

@ -1,10 +1,11 @@
using System; using System;
using System.Collections.Generic; using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns namespace Volo.Abp.Modularity.PlugIns
{ {
public interface IPlugInSource public interface IPlugInSource
{ {
List<Type> GetModules(); [NotNull]
Type[] GetModules();
} }
} }

9
src/Volo.Abp/Volo/Abp/Modularity/PlugIns/PlugInSourceExtensions.cs

@ -1,18 +1,21 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns namespace Volo.Abp.Modularity.PlugIns
{ {
public static class PlugInSourceExtensions public static class PlugInSourceExtensions
{ {
public static List<Type> GetModulesWithAllDependencies(this IPlugInSource plugInSource) [NotNull]
public static Type[] GetModulesWithAllDependencies([NotNull] this IPlugInSource plugInSource)
{ {
Check.NotNull(plugInSource, nameof(plugInSource));
return plugInSource return plugInSource
.GetModules() .GetModules()
.SelectMany(AbpModuleHelper.FindAllModuleTypes) .SelectMany(AbpModuleHelper.FindAllModuleTypes)
.Distinct() .Distinct()
.ToList(); .ToArray();
} }
} }
} }

6
src/Volo.Abp/Volo/Abp/Modularity/PlugIns/PlugInSourceList.cs

@ -1,17 +1,19 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns namespace Volo.Abp.Modularity.PlugIns
{ {
public class PlugInSourceList : List<IPlugInSource> public class PlugInSourceList : List<IPlugInSource>
{ {
internal List<Type> GetAllModules() [NotNull]
internal Type[] GetAllModules()
{ {
return this return this
.SelectMany(pluginSource => pluginSource.GetModulesWithAllDependencies()) .SelectMany(pluginSource => pluginSource.GetModulesWithAllDependencies())
.Distinct() .Distinct()
.ToList(); .ToArray();
} }
} }
} }

9
src/Volo.Abp/Volo/Abp/Modularity/PlugIns/PlugInSourceListExtensions.cs

@ -1,17 +1,22 @@
using System; using System;
using System.IO; using System.IO;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns namespace Volo.Abp.Modularity.PlugIns
{ {
public static class PlugInSourceListExtensions public static class PlugInSourceListExtensions
{ {
public static void AddFolder(this PlugInSourceList list, string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly) public static void AddFolder([NotNull] this PlugInSourceList list, [NotNull] string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly)
{ {
Check.NotNull(list, nameof(list));
list.Add(new FolderPlugInSource(folder, searchOption)); list.Add(new FolderPlugInSource(folder, searchOption));
} }
public static void AddTypes(this PlugInSourceList list, params Type[] moduleTypes) public static void AddTypes([NotNull] this PlugInSourceList list, params Type[] moduleTypes)
{ {
Check.NotNull(list, nameof(list));
list.Add(new PlugInTypeListSource(moduleTypes)); list.Add(new PlugInTypeListSource(moduleTypes));
} }
} }

10
src/Volo.Abp/Volo/Abp/Modularity/PlugIns/PlugInTypeListSource.cs

@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using JetBrains.Annotations;
using System.Linq;
namespace Volo.Abp.Modularity.PlugIns namespace Volo.Abp.Modularity.PlugIns
{ {
@ -10,12 +9,13 @@ namespace Volo.Abp.Modularity.PlugIns
public PlugInTypeListSource(params Type[] moduleTypes) public PlugInTypeListSource(params Type[] moduleTypes)
{ {
_moduleTypes = moduleTypes; _moduleTypes = moduleTypes ?? new Type[0];
} }
public List<Type> GetModules() [NotNull]
public Type[] GetModules()
{ {
return _moduleTypes.ToList(); return _moduleTypes;
} }
} }
} }
Loading…
Cancel
Save