aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs9
-rw-r--r--MediaBrowser.Controller/Entities/BaseItemExtensions.cs17
2 files changed, 19 insertions, 7 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index f25688bba..bd823e0c1 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -730,10 +730,8 @@ namespace Emby.Server.Implementations.Library
_fileSystem.CreateDirectory(rootFolderPath);
- var tmpAFolder = new AggregateFolder();
- ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath))).DeepCopy<Folder,AggregateFolder>(tmpAFolder);
- var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? tmpAFolder;
-
+ var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath))).DeepCopy<Folder,AggregateFolder>();
+
// In case program data folder was moved
if (!string.Equals(rootFolder.Path, rootFolderPath, StringComparison.Ordinal))
{
@@ -801,8 +799,7 @@ namespace Emby.Server.Implementations.Library
if (tmpItem == null)
{
- tmpItem = new UserRootFolder();
- ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath))).DeepCopy<Folder,UserRootFolder>(tmpItem);
+ tmpItem = ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath))).DeepCopy<Folder,UserRootFolder>();
}
// In case program data folder was moved
diff --git a/MediaBrowser.Controller/Entities/BaseItemExtensions.cs b/MediaBrowser.Controller/Entities/BaseItemExtensions.cs
index 97e56d1fd..8ab1788b5 100644
--- a/MediaBrowser.Controller/Entities/BaseItemExtensions.cs
+++ b/MediaBrowser.Controller/Entities/BaseItemExtensions.cs
@@ -68,7 +68,9 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
/// <param name="source">The source object.</param>
/// <param name="dest">The destination object.</param>
- public static void DeepCopy<T, TU>(this T source, TU dest)
+ public static void DeepCopy<T, TU>(this T source, TU dest)
+ where T : BaseItem
+ where TU : BaseItem
{
var sourceProps = typeof (T).GetProperties().Where(x => x.CanRead).ToList();
var destProps = typeof(TU).GetProperties()
@@ -87,6 +89,19 @@ namespace MediaBrowser.Controller.Entities
}
+ /// <summary>
+ /// Copies all properties on newly created object. Skips properties that do not exist.
+ /// </summary>
+ /// <param name="source">The source object.</param>
+ public static TU DeepCopy<T, TU>(this T source)
+ where T : BaseItem
+ where TU : BaseItem, new()
+ {
+ var dest = new TU();
+ source.DeepCopy(dest);
+ return dest;
+ }
+
}
}