Skip to content

Commit c6177ca

Browse files
committed
reduce dependency of Smdn.Fundamental.Exception
1 parent 8376612 commit c6177ca

File tree

8 files changed

+56
-43
lines changed

8 files changed

+56
-43
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// SPDX-FileCopyrightText: 2025 smdn <smdn@smdn.jp>
2+
// SPDX-License-Identifier: MIT
3+
namespace System;
4+
5+
internal static class ArgumentExceptionShim {
6+
public static void ThrowIfNullOrEmpty(string? argument, string? paramName)
7+
{
8+
#if SYSTEM_ARGUMENTEXCEPTION_THROWIFNULLOREMPTY
9+
ArgumentException.ThrowIfNullOrEmpty(argument, paramName);
10+
#else
11+
if (argument is null)
12+
throw new ArgumentNullException(paramName: paramName);
13+
if (argument.Length == 0)
14+
throw Smdn.ExceptionUtils.CreateArgumentMustBeNonEmptyString(paramName: paramName);
15+
#endif
16+
}
17+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// SPDX-FileCopyrightText: 2025 smdn <smdn@smdn.jp>
2+
// SPDX-License-Identifier: MIT
3+
namespace System;
4+
5+
internal static class ArgumentOutOfRangeExceptionShim {
6+
public static void ThrowIfLessThanOrEqual<T>(T value, T other, string? paramName)
7+
where T : IComparable<T>
8+
{
9+
#if NET8_0_OR_GREATER
10+
ArgumentOutOfRangeException.ThrowIfLessThanOrEqual(value, other, paramName);
11+
#else
12+
if (value.CompareTo(other) <= 0)
13+
throw Smdn.ExceptionUtils.CreateArgumentMustBeGreaterThan(other, paramName: paramName, actualValue: value);
14+
#endif
15+
}
16+
}

src/Smdn.Net.MuninNode/Smdn.Net.MuninNode.csproj

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ This library also provides abstraction APIs for implementing Munin-Plugin. By us
3636
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0" />
3737
<PackageReference Include="Microsoft.Extensions.Options" Version="8.0.0" />
3838
<PackageReference Include="Smdn.Fundamental.Encoding.Buffer" Version="[3.0.0,4.0.0)" Condition="$(TargetFramework.StartsWith('net4')) or $(TargetFramework.StartsWith('netstandard'))" />
39-
<PackageReference Include="Smdn.Fundamental.Exception" Version="[3.0.0,4.0.0)" />
39+
<PackageReference Include="Smdn.Fundamental.Exception" Version="[3.0.0,4.0.0)" Condition="$(TargetFramework.StartsWith('netstandard'))" />
40+
</ItemGroup>
41+
42+
<ItemGroup>
43+
<Compile Include="$(MSBuildThisFileDirectory)..\Common\Shim\System\ArgumentExceptionShim.cs"/>
44+
<Compile Include="$(MSBuildThisFileDirectory)..\Common\Shim\System\ArgumentOutOfRangeExceptionShim.cs"/>
4045
</ItemGroup>
4146

4247
<Target Name="GenerateReadmeFileContent">

src/Smdn.Net.MuninNode/Smdn.Net.MuninNode/MuninNodeOptions.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,7 @@ public int Port {
7676
public string HostName {
7777
get => hostName;
7878
set {
79-
if (value is null)
80-
throw new ArgumentNullException(nameof(HostName));
81-
if (value.Length == 0)
82-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(HostName));
79+
ArgumentExceptionShim.ThrowIfNullOrEmpty(value, nameof(HostName));
8380

8481
hostName = value;
8582
}

src/Smdn.Net.MuninNode/Smdn.Net.MuninPlugin/Plugin.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@ public Plugin(
3030
IReadOnlyCollection<IPluginField> fields
3131
)
3232
{
33-
if (name is null)
34-
throw new ArgumentNullException(nameof(name));
35-
if (name.Length == 0)
36-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(name));
33+
ArgumentExceptionShim.ThrowIfNullOrEmpty(name, nameof(name));
3734

3835
Name = name;
3936
GraphAttributes = graphAttributes ?? throw new ArgumentNullException(nameof(graphAttributes));

src/Smdn.Net.MuninNode/Smdn.Net.MuninPlugin/PluginFieldAttributes.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,7 @@ public PluginFieldAttributes(
7979
string? negativeFieldName
8080
)
8181
{
82-
if (label is null)
83-
throw new ArgumentNullException(nameof(label));
84-
if (label.Length == 0)
85-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(label));
82+
ArgumentExceptionShim.ThrowIfNullOrEmpty(label, nameof(label));
8683

8784
Label = label;
8885
GraphStyle = graphStyle;

src/Smdn.Net.MuninNode/Smdn.Net.MuninPlugin/PluginFieldBase.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,15 @@ protected PluginFieldBase(
5454
string? negativeFieldName
5555
)
5656
{
57-
if (label is null)
58-
throw new ArgumentNullException(nameof(label));
59-
if (label.Length == 0)
60-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(label));
57+
ArgumentExceptionShim.ThrowIfNullOrEmpty(label, nameof(label));
58+
6159
if (!RegexValidFieldLabel.IsMatch(label))
6260
throw new ArgumentException($"'{label}' is invalid for field name. The value of {nameof(label)} must match the following regular expression: '{RegexValidFieldLabel}'", nameof(label));
6361

6462
name ??= GetDefaultNameFromLabel(label);
6563

66-
if (name.Length == 0)
67-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(name));
64+
ArgumentExceptionShim.ThrowIfNullOrEmpty(name, nameof(name));
65+
6866
if (!RegexValidFieldName.IsMatch(name))
6967
throw new ArgumentException($"'{name}' is invalid for field name. The value of {nameof(name)} must match the following regular expression: '{RegexValidFieldName}'", nameof(name));
7068

@@ -121,10 +119,7 @@ async ValueTask<string> IPluginField.GetFormattedValueStringAsync(CancellationTo
121119

122120
private static string GetDefaultNameFromLabel(string label)
123121
{
124-
if (label is null)
125-
throw new ArgumentNullException(nameof(label));
126-
if (label.Length == 0)
127-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(label));
122+
ArgumentExceptionShim.ThrowIfNullOrEmpty(label, nameof(label));
128123

129124
return RegexInvalidFieldNameChars.Replace(
130125
RegexInvalidFieldNamePrefix.Replace(label, string.Empty),

src/Smdn.Net.MuninNode/Smdn.Net.MuninPlugin/PluginGraphAttributes.cs

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -91,26 +91,15 @@ public PluginGraphAttributes(
9191
string? totalValueLabel
9292
)
9393
{
94-
if (title is null)
95-
throw new ArgumentNullException(nameof(title));
96-
if (title.Length == 0)
97-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(title));
98-
if (category is null)
99-
throw new ArgumentNullException(nameof(category));
100-
if (category.Length == 0)
101-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(category));
102-
if (arguments is null)
103-
throw new ArgumentNullException(nameof(arguments));
104-
if (arguments.Length == 0)
105-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(arguments));
106-
if (verticalLabel is null)
107-
throw new ArgumentNullException(nameof(verticalLabel));
108-
if (verticalLabel.Length == 0)
109-
throw ExceptionUtils.CreateArgumentMustBeNonEmptyString(nameof(verticalLabel));
110-
if (width.HasValue && width.Value <= 0)
111-
throw ExceptionUtils.CreateArgumentMustBeGreaterThan(0, nameof(width), width);
112-
if (height.HasValue && height.Value <= 0)
113-
throw ExceptionUtils.CreateArgumentMustBeGreaterThan(0, nameof(height), height);
94+
ArgumentExceptionShim.ThrowIfNullOrEmpty(title, nameof(title));
95+
ArgumentExceptionShim.ThrowIfNullOrEmpty(category, nameof(category));
96+
ArgumentExceptionShim.ThrowIfNullOrEmpty(verticalLabel, nameof(verticalLabel));
97+
ArgumentExceptionShim.ThrowIfNullOrEmpty(arguments, nameof(arguments));
98+
99+
if (width.HasValue)
100+
ArgumentOutOfRangeExceptionShim.ThrowIfLessThanOrEqual(width.Value, 0, nameof(width));
101+
if (height.HasValue)
102+
ArgumentOutOfRangeExceptionShim.ThrowIfLessThanOrEqual(height.Value, 0, nameof(height));
114103

115104
Title = title;
116105
Category = category;

0 commit comments

Comments
 (0)