aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-11-19 11:51:49 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-11-19 11:51:49 -0500
commitbdab0a1588fa4347d168c69f803a13cf607b4166 (patch)
tree336b42433978a473f0a082c0dbf42c5996ded00e
parent52227ce00d9602e4356c0b1f91a42ab8c61b19a6 (diff)
move TypeMapper to portable project
-rw-r--r--Emby.Common.Implementations/Reflection/AssemblyInfo.cs5
-rw-r--r--Emby.Common.Implementations/project.json2
-rw-r--r--Emby.Server.Core/ApplicationHost.cs2
-rw-r--r--Emby.Server.Core/Data/SqliteItemRepository.cs7
-rw-r--r--Emby.Server.Implementations/Data/TypeMapper.cs (renamed from Emby.Server.Core/Data/TypeMapper.cs)21
-rw-r--r--Emby.Server.Implementations/Emby.Server.Implementations.csproj1
-rw-r--r--MediaBrowser.Model/Reflection/IAssemblyInfo.cs3
7 files changed, 31 insertions, 10 deletions
diff --git a/Emby.Common.Implementations/Reflection/AssemblyInfo.cs b/Emby.Common.Implementations/Reflection/AssemblyInfo.cs
index bd2cb7cf0..7a92f02d6 100644
--- a/Emby.Common.Implementations/Reflection/AssemblyInfo.cs
+++ b/Emby.Common.Implementations/Reflection/AssemblyInfo.cs
@@ -22,5 +22,10 @@ namespace Emby.Common.Implementations.Reflection
#endif
return type.GetTypeInfo().Assembly.GetManifestResourceNames();
}
+
+ public Assembly[] GetCurrentAssemblies()
+ {
+ return AppDomain.CurrentDomain.GetAssemblies();
+ }
}
}
diff --git a/Emby.Common.Implementations/project.json b/Emby.Common.Implementations/project.json
index b0a35bdf3..409687ea1 100644
--- a/Emby.Common.Implementations/project.json
+++ b/Emby.Common.Implementations/project.json
@@ -14,6 +14,7 @@
"System.Net.Http": "4.0.0.0",
"System.Net.Primitives": "4.0.0.0",
"System.Net.Http.WebRequest": "4.0.0.0",
+ "System.Reflection": "4.0.0.0",
"System.Runtime": "4.0.0.0",
"System.Runtime.Extensions": "4.0.0.0",
"System.Text.Encoding": "4.0.0.0",
@@ -57,6 +58,7 @@
"ServiceStack.Text.Core": "1.0.27",
"NLog": "4.4.0-betaV15",
"sharpcompress": "0.14.0",
+ "System.AppDomain": "2.0.11",
"MediaBrowser.Model": {
"target": "project"
},
diff --git a/Emby.Server.Core/ApplicationHost.cs b/Emby.Server.Core/ApplicationHost.cs
index 00b9b99e6..6b3ca940b 100644
--- a/Emby.Server.Core/ApplicationHost.cs
+++ b/Emby.Server.Core/ApplicationHost.cs
@@ -550,7 +550,7 @@ namespace Emby.Server.Core
DisplayPreferencesRepository = displayPreferencesRepo;
RegisterSingleInstance(DisplayPreferencesRepository);
- var itemRepo = new SqliteItemRepository(ServerConfigurationManager, JsonSerializer, LogManager, GetDbConnector(), MemoryStreamFactory);
+ var itemRepo = new SqliteItemRepository(ServerConfigurationManager, JsonSerializer, LogManager, GetDbConnector(), MemoryStreamFactory, assemblyInfo);
ItemRepository = itemRepo;
RegisterSingleInstance(ItemRepository);
diff --git a/Emby.Server.Core/Data/SqliteItemRepository.cs b/Emby.Server.Core/Data/SqliteItemRepository.cs
index 2f08081f6..5b8f18088 100644
--- a/Emby.Server.Core/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Core/Data/SqliteItemRepository.cs
@@ -28,6 +28,8 @@ using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Server.Implementations.Devices;
using MediaBrowser.Server.Implementations.Playlists;
+using Emby.Server.Implementations.Data;
+using MediaBrowser.Model.Reflection;
namespace Emby.Server.Core.Data
{
@@ -38,7 +40,7 @@ namespace Emby.Server.Core.Data
{
private IDbConnection _connection;
- private readonly TypeMapper _typeMapper = new TypeMapper();
+ private readonly TypeMapper _typeMapper;
/// <summary>
/// Gets the name of the repository
@@ -95,7 +97,7 @@ namespace Emby.Server.Core.Data
/// <summary>
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
/// </summary>
- public SqliteItemRepository(IServerConfigurationManager config, IJsonSerializer jsonSerializer, ILogManager logManager, IDbConnector connector, IMemoryStreamFactory memoryStreamProvider)
+ public SqliteItemRepository(IServerConfigurationManager config, IJsonSerializer jsonSerializer, ILogManager logManager, IDbConnector connector, IMemoryStreamFactory memoryStreamProvider, IAssemblyInfo assemblyInfo)
: base(logManager, connector)
{
if (config == null)
@@ -110,6 +112,7 @@ namespace Emby.Server.Core.Data
_config = config;
_jsonSerializer = jsonSerializer;
_memoryStreamProvider = memoryStreamProvider;
+ _typeMapper = new TypeMapper(assemblyInfo);
_criticReviewsPath = Path.Combine(_config.ApplicationPaths.DataPath, "critic-reviews");
DbFilePath = Path.Combine(_config.ApplicationPaths.DataPath, "library.db");
diff --git a/Emby.Server.Core/Data/TypeMapper.cs b/Emby.Server.Implementations/Data/TypeMapper.cs
index f8eb5dd2d..f4b37749e 100644
--- a/Emby.Server.Core/Data/TypeMapper.cs
+++ b/Emby.Server.Implementations/Data/TypeMapper.cs
@@ -1,19 +1,27 @@
using System;
using System.Collections.Concurrent;
+using MediaBrowser.Model.Reflection;
using System.Linq;
-namespace Emby.Server.Core.Data
+namespace Emby.Server.Implementations.Data
{
/// <summary>
/// Class TypeMapper
/// </summary>
public class TypeMapper
{
+ private readonly IAssemblyInfo _assemblyInfo;
+
/// <summary>
/// This holds all the types in the running assemblies so that we can de-serialize properly when we don't have strong types
/// </summary>
private readonly ConcurrentDictionary<string, Type> _typeMap = new ConcurrentDictionary<string, Type>();
+ public TypeMapper(IAssemblyInfo assemblyInfo)
+ {
+ _assemblyInfo = assemblyInfo;
+ }
+
/// <summary>
/// Gets the type.
/// </summary>
@@ -24,7 +32,7 @@ namespace Emby.Server.Core.Data
{
if (string.IsNullOrEmpty(typeName))
{
- throw new ArgumentNullException();
+ throw new ArgumentNullException("typeName");
}
return _typeMap.GetOrAdd(typeName, LookupType);
@@ -37,11 +45,10 @@ namespace Emby.Server.Core.Data
/// <returns>Type.</returns>
private Type LookupType(string typeName)
{
- return AppDomain
- .CurrentDomain
- .GetAssemblies()
- .Select(a => a.GetType(typeName, false))
- .FirstOrDefault(t => t != null);
+ return _assemblyInfo
+ .GetCurrentAssemblies()
+ .Select(a => a.GetType(typeName))
+ .FirstOrDefault(t => t != null);
}
}
}
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index 48b598732..daf221af0 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -54,6 +54,7 @@
<Compile Include="Data\SqliteDisplayPreferencesRepository.cs" />
<Compile Include="Data\SqliteFileOrganizationRepository.cs" />
<Compile Include="Data\SqliteUserRepository.cs" />
+ <Compile Include="Data\TypeMapper.cs" />
<Compile Include="Devices\CameraUploadsDynamicFolder.cs" />
<Compile Include="Devices\DeviceManager.cs" />
<Compile Include="Devices\DeviceRepository.cs" />
diff --git a/MediaBrowser.Model/Reflection/IAssemblyInfo.cs b/MediaBrowser.Model/Reflection/IAssemblyInfo.cs
index 634fadc1b..e8e9c414c 100644
--- a/MediaBrowser.Model/Reflection/IAssemblyInfo.cs
+++ b/MediaBrowser.Model/Reflection/IAssemblyInfo.cs
@@ -1,5 +1,6 @@
using System;
using System.IO;
+using System.Reflection;
namespace MediaBrowser.Model.Reflection
{
@@ -7,5 +8,7 @@ namespace MediaBrowser.Model.Reflection
{
Stream GetManifestResourceStream(Type type, string resource);
string[] GetManifestResourceNames(Type type);
+
+ Assembly[] GetCurrentAssemblies();
}
}