Remove dependency on Hosting.Abstractions
This commit is contained in:
parent
e81627ba02
commit
65e3af98d5
|
|
@ -6,7 +6,6 @@ using System.Collections.Concurrent;
|
|||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace Microsoft.Extensions.Localization
|
||||
|
|
@ -24,29 +23,20 @@ namespace Microsoft.Extensions.Localization
|
|||
private readonly IResourceNamesCache _resourceNamesCache = new ResourceNamesCache();
|
||||
private readonly ConcurrentDictionary<string, ResourceManagerStringLocalizer> _localizerCache =
|
||||
new ConcurrentDictionary<string, ResourceManagerStringLocalizer>();
|
||||
private readonly string _applicationName;
|
||||
private readonly string _resourcesRelativePath;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="ResourceManagerStringLocalizer"/>.
|
||||
/// </summary>
|
||||
/// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
|
||||
/// <param name="localizationOptions">The <see cref="IOptions{LocalizationOptions}"/>.</param>
|
||||
public ResourceManagerStringLocalizerFactory(
|
||||
IHostingEnvironment hostingEnvironment,
|
||||
IOptions<LocalizationOptions> localizationOptions)
|
||||
{
|
||||
if (hostingEnvironment == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(hostingEnvironment));
|
||||
}
|
||||
|
||||
if (localizationOptions == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(localizationOptions));
|
||||
}
|
||||
|
||||
_applicationName = hostingEnvironment.ApplicationName;
|
||||
_resourcesRelativePath = localizationOptions.Value.ResourcesPath ?? string.Empty;
|
||||
if (!string.IsNullOrEmpty(_resourcesRelativePath))
|
||||
{
|
||||
|
|
@ -162,7 +152,10 @@ namespace Microsoft.Extensions.Localization
|
|||
throw new ArgumentNullException(nameof(baseName));
|
||||
}
|
||||
|
||||
location = location ?? _applicationName;
|
||||
if (location == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(location));
|
||||
}
|
||||
|
||||
return _localizerCache.GetOrAdd($"B={baseName},L={location}", _ =>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
[
|
||||
{
|
||||
"OldTypeId": "public class Microsoft.Extensions.Localization.ResourceManagerStringLocalizerFactory : Microsoft.Extensions.Localization.IStringLocalizerFactory",
|
||||
"OldMemberId": "public .ctor(Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnvironment, Microsoft.Extensions.Options.IOptions<Microsoft.Extensions.Localization.LocalizationOptions> localizationOptions)",
|
||||
"NewTypeId": "public class Microsoft.Extensions.Localization.ResourceManagerStringLocalizerFactory : Microsoft.Extensions.Localization.IStringLocalizerFactory",
|
||||
"NewMemberId": "public .ctor(Microsoft.Extensions.Options.IOptions<Microsoft.Extensions.Localization.LocalizationOptions> localizationOptions)",
|
||||
"Kind": "Modification"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
[
|
||||
{
|
||||
"OldTypeId": "public class Microsoft.Extensions.Localization.ResourceManagerStringLocalizerFactory : Microsoft.Extensions.Localization.IStringLocalizerFactory",
|
||||
"OldMemberId": "public .ctor(Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnvironment, Microsoft.Extensions.Options.IOptions<Microsoft.Extensions.Localization.LocalizationOptions> localizationOptions)",
|
||||
"NewTypeId": "public class Microsoft.Extensions.Localization.ResourceManagerStringLocalizerFactory : Microsoft.Extensions.Localization.IStringLocalizerFactory",
|
||||
"NewMemberId": "public .ctor(Microsoft.Extensions.Options.IOptions<Microsoft.Extensions.Localization.LocalizationOptions> localizationOptions)",
|
||||
"Kind": "Modification"
|
||||
}
|
||||
]
|
||||
|
|
@ -19,7 +19,6 @@
|
|||
"xmlDoc": true
|
||||
},
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Hosting.Abstractions": "1.2.0-*",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "1.2.0-*",
|
||||
"Microsoft.Extensions.Localization.Abstractions": {
|
||||
"target": "project"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
|
@ -18,10 +18,9 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public string BaseName { get; private set; }
|
||||
|
||||
public TestResourceManagerStringLocalizerFactory(
|
||||
IHostingEnvironment hostingEnvironment,
|
||||
IOptions<LocalizationOptions> localizationOptions,
|
||||
ResourceLocationAttribute resourceLocationAttribute)
|
||||
: base(hostingEnvironment, localizationOptions)
|
||||
: base(localizationOptions)
|
||||
{
|
||||
_resourceLocationAttribute = resourceLocationAttribute;
|
||||
}
|
||||
|
|
@ -46,19 +45,15 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public void Create_OverloadsProduceSameResult()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(a => a.ApplicationName).Returns("TestApplication");
|
||||
var locOptions = new LocalizationOptions();
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
|
||||
var resourceLocationAttribute = new ResourceLocationAttribute(Path.Combine("My", "Resources"));
|
||||
var typeFactory = new TestResourceManagerStringLocalizerFactory(
|
||||
hostingEnvironment.Object,
|
||||
options.Object,
|
||||
resourceLocationAttribute);
|
||||
var stringFactory = new TestResourceManagerStringLocalizerFactory(
|
||||
hostingEnvironment.Object,
|
||||
options.Object,
|
||||
resourceLocationAttribute);
|
||||
var type = typeof(ResourceManagerStringLocalizerFactoryTest);
|
||||
|
|
@ -77,12 +72,10 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public void Create_FromType_ReturnsCachedResultForSameType()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(a => a.ApplicationName).Returns("TestApplication");
|
||||
var locOptions = new LocalizationOptions();
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(hostingEnvironment.Object, localizationOptions: options.Object);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object);
|
||||
|
||||
// Act
|
||||
var result1 = factory.Create(typeof(ResourceManagerStringLocalizerFactoryTest));
|
||||
|
|
@ -96,12 +89,10 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public void Create_FromType_ReturnsNewResultForDifferentType()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(a => a.ApplicationName).Returns("TestApplication");
|
||||
var locOptions = new LocalizationOptions();
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(hostingEnvironment.Object, localizationOptions: options.Object);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object);
|
||||
|
||||
// Act
|
||||
var result1 = factory.Create(typeof(ResourceManagerStringLocalizerFactoryTest));
|
||||
|
|
@ -115,13 +106,11 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public void Create_FromType_ResourcesPathDirectorySeperatorToDot()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
var locOptions = new LocalizationOptions();
|
||||
locOptions.ResourcesPath = Path.Combine("My", "Resources");
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
var factory = new TestResourceManagerStringLocalizerFactory(
|
||||
hostingEnvironment.Object,
|
||||
options.Object,
|
||||
resourceLocationAttribute: null);
|
||||
|
||||
|
|
@ -136,12 +125,10 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public void Create_FromNameLocation_ReturnsCachedResultForSameNameLocation()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(a => a.ApplicationName).Returns("TestApplication");
|
||||
var locOptions = new LocalizationOptions();
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(hostingEnvironment.Object, localizationOptions: options.Object);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object);
|
||||
var location = typeof(ResourceManagerStringLocalizer).GetTypeInfo().Assembly.FullName;
|
||||
|
||||
// Act
|
||||
|
|
@ -156,12 +143,10 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public void Create_FromNameLocation_ReturnsNewResultForDifferentName()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(a => a.ApplicationName).Returns("TestApplication");
|
||||
var locOptions = new LocalizationOptions();
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(hostingEnvironment.Object, localizationOptions: options.Object);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object);
|
||||
var location = typeof(ResourceManagerStringLocalizer).GetTypeInfo().Assembly.FullName;
|
||||
|
||||
// Act
|
||||
|
|
@ -176,12 +161,10 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public void Create_FromNameLocation_ReturnsNewResultForDifferentLocation()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(a => a.ApplicationName).Returns("TestApplication");
|
||||
var locOptions = new LocalizationOptions();
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(hostingEnvironment.Object, localizationOptions: options.Object);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object);
|
||||
var location1 = new AssemblyName(typeof(ResourceManagerStringLocalizer).GetTypeInfo().Assembly.FullName).Name;
|
||||
var location2 = new AssemblyName(typeof(ResourceManagerStringLocalizerFactoryTest).GetTypeInfo().Assembly.FullName).Name;
|
||||
|
||||
|
|
@ -197,41 +180,32 @@ namespace Microsoft.Extensions.Localization.Tests
|
|||
public void Create_FromNameLocation_ResourcesPathDirectorySeparatorToDot()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(a => a.ApplicationName).Returns("Microsoft.Extensions.Localization.Tests");
|
||||
var locOptions = new LocalizationOptions();
|
||||
locOptions.ResourcesPath = Path.Combine("My", "Resources");
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
var factory = new TestResourceManagerStringLocalizerFactory(
|
||||
hostingEnvironment.Object,
|
||||
options.Object,
|
||||
resourceLocationAttribute: null);
|
||||
|
||||
// Act
|
||||
var result1 = factory.Create("baseName", location: null);
|
||||
var result1 = factory.Create("baseName", location: "Microsoft.Extensions.Localization.Tests");
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Microsoft.Extensions.Localization.Tests.My.Resources.baseName", factory.BaseName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Create_FromNameLocation_NullLocationUsesApplicationPath()
|
||||
public void Create_FromNameLocation_NullLocationThrows()
|
||||
{
|
||||
// Arrange
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(a => a.ApplicationName).Returns("Microsoft.Extensions.Localization.Tests");
|
||||
var locOptions = new LocalizationOptions();
|
||||
var options = new Mock<IOptions<LocalizationOptions>>();
|
||||
options.Setup(o => o.Value).Returns(locOptions);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(hostingEnvironment.Object, localizationOptions: options.Object);
|
||||
var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object);
|
||||
|
||||
// Act
|
||||
var result1 = factory.Create("baseName", location: null);
|
||||
var result2 = factory.Create("baseName", location: null);
|
||||
|
||||
// Assert
|
||||
Assert.Same(result1, result2);
|
||||
// Act & Assert
|
||||
Assert.Throws<ArgumentNullException>(() => factory.Create("baseName", location: null));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue