diff --git a/.github/workflows/feature_branches.yml b/.github/workflows/feature_branches.yml
index 7199d5bb..587b9a08 100644
--- a/.github/workflows/feature_branches.yml
+++ b/.github/workflows/feature_branches.yml
@@ -22,7 +22,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
- dotnet-version: 6.0.201
+ dotnet-version: 8
- name: Build/Check for compile errors (dotnet build)
run: dotnet build --configuration Release --version-suffix "${{github.sha}}"
- name: Run Unit Tests (dotnet test)
diff --git a/BO4E/meta/LenientConverters/LenientGeraetemerkmalGasConverter.cs b/BO4E/meta/LenientConverters/LenientGeraetemerkmalGasConverter.cs
index b68b3105..31256b35 100644
--- a/BO4E/meta/LenientConverters/LenientGeraetemerkmalGasConverter.cs
+++ b/BO4E/meta/LenientConverters/LenientGeraetemerkmalGasConverter.cs
@@ -12,7 +12,7 @@ namespace BO4E.meta.LenientConverters;
public class LenientGeraetemerkmalGasConverter : JsonConverter
{
///
- public override bool CanWrite => false;
+ public override bool CanWrite => true;
///
public override bool CanConvert(Type objectType)
@@ -41,7 +41,10 @@ JsonSerializer serializer
rawValue = reader.Value?.ToString();
break;
}
-
+ if (string.IsNullOrEmpty(rawValue))
+ {
+ return null;
+ }
try
{
return Enums.Parse(rawValue);
@@ -59,6 +62,6 @@ JsonSerializer serializer
///
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
- throw new NotImplementedException();
+ writer.WriteRawValue("\"" + value.ToString() + "\"");
}
}
diff --git a/BO4E/meta/LenientConverters/LenientSystemTextGeraetemerkmalGasConverter.cs b/BO4E/meta/LenientConverters/LenientSystemTextGeraetemerkmalGasConverter.cs
index 715ff36a..81c13199 100644
--- a/BO4E/meta/LenientConverters/LenientSystemTextGeraetemerkmalGasConverter.cs
+++ b/BO4E/meta/LenientConverters/LenientSystemTextGeraetemerkmalGasConverter.cs
@@ -57,13 +57,6 @@ JsonSerializerOptions options
)
{
var stringValue = value.ToString();
- var match = GasPrefixRegex.Match(stringValue);
- if (!match.Success)
- {
- writer.WriteStringValue(stringValue);
- return;
- }
- var rest = match.Groups["rest"].Value;
- writer.WriteStringValue(rest);
+ writer.WriteStringValue(stringValue);
}
}
diff --git a/BO4E/meta/LenientConverters/LenientSystemTextNullableGeraetemerkmalGasConverter.cs b/BO4E/meta/LenientConverters/LenientSystemTextNullableGeraetemerkmalGasConverter.cs
index 68c5a5a3..ffa654be 100644
--- a/BO4E/meta/LenientConverters/LenientSystemTextNullableGeraetemerkmalGasConverter.cs
+++ b/BO4E/meta/LenientConverters/LenientSystemTextNullableGeraetemerkmalGasConverter.cs
@@ -62,16 +62,8 @@ JsonSerializerOptions options
{
if (value.HasValue)
{
- // Remove the "GAS_" prefix if it exists
- var stringValue = value.Value.ToString();
- var match = GasPrefixRegex.Match(stringValue);
- if (!match.Success)
- {
- writer.WriteStringValue(stringValue);
- return;
- }
- var rest = match.Groups["rest"].Value;
- writer.WriteStringValue(rest);
+ var stringValue = value.ToString();
+ writer.WriteStringValue(stringValue);
}
else
{
diff --git a/BO4E/protobuf-files/bo4e.proto b/BO4E/protobuf-files/bo4e.proto
index b10594b3..10ec5447 100644
--- a/BO4E/protobuf-files/bo4e.proto
+++ b/BO4E/protobuf-files/bo4e.proto
@@ -329,6 +329,7 @@ enum Energierichtung {
AUSSP = 0;
EINSP = 1;
RUHEND = 2;
+ KUNDENANLAGE = 3;
}
message Erreichbarkeit {
option (.protobuf_net.msgopt).namespace = "BO4E.COM";
@@ -961,7 +962,7 @@ message Marktlokation {
Geschaeftspartner Endkunde = 17;
Adresse Lokationsadresse = 18;
Geokoordinaten Geoadresse = 19;
- Katasteradresse Katasterinformation = 20;
+ repeated Katasteradresse Katasterinformation = 20;
repeated Messlokationszuordnung ZugehoerigeMesslokationen = 28;
repeated Netznutzungsabrechnungsdaten Netznutzungsabrechnungsdaten = 37;
Sperrstatus Sperrstatus = 38;
diff --git a/BO4ETestProject/TestGeraetemerkmalConverter.cs b/BO4ETestProject/TestGeraetemerkmalConverter.cs
index a6d95628..e4d75657 100644
--- a/BO4ETestProject/TestGeraetemerkmalConverter.cs
+++ b/BO4ETestProject/TestGeraetemerkmalConverter.cs
@@ -1,3 +1,4 @@
+using System.Collections.Generic;
using System.Text.Json.Serialization;
using BO4E.ENUM;
using BO4E.meta.LenientConverters;
@@ -84,6 +85,27 @@ public void TestNewtonsoft_Success_Nullable()
result.Merkmal.Should().Be(Geraetemerkmal.GAS_G4);
}
+ [TestMethod]
+ public void TestNewtonsoft_Success_Nullable_Serialization()
+ {
+ var myInstance = new SomethingWithANullableGeraetemerkmal()
+ {
+ Merkmal = Geraetemerkmal.GAS_G4,
+ };
+ var result = JsonConvert.SerializeObject(
+ myInstance,
+ new JsonSerializerSettings()
+ {
+ Converters = new List()
+ {
+ new LenientGeraetemerkmalGasConverter(),
+ new Newtonsoft.Json.Converters.StringEnumConverter(),
+ },
+ }
+ );
+ result.Should().NotBeNullOrWhiteSpace().And.Contain("\"GAS_G4\"").And.NotContain("\"G4\"");
+ }
+
[TestMethod]
public void TestNewtonsoft_Success_Nullable_WASSER_MWZW()
{
@@ -120,6 +142,21 @@ public void TestSystemText_Success_NonNullable()
result.Merkmal.Should().Be(Geraetemerkmal.GAS_G4);
}
+ [TestMethod]
+ public void TestSystemText_Success_NonNullable_Serialization()
+ {
+ var myInstance = new SomethingWithANullableGeraetemerkmal()
+ {
+ Merkmal = Geraetemerkmal.GAS_G4,
+ };
+ var settings = new System.Text.Json.JsonSerializerOptions()
+ {
+ Converters = { new LenientSystemTextGeraetemerkmalGasConverter() },
+ };
+ var result = System.Text.Json.JsonSerializer.Serialize(myInstance, settings);
+ result.Should().NotBeNullOrWhiteSpace().And.Contain("\"GAS_G4\"").And.NotContain("\"G4\"");
+ }
+
[TestMethod]
public void TestSystemText_Success_NonNullable_WASSER_MWZW()
{
@@ -172,7 +209,7 @@ public void TestSystemText_Write_NonNullable()
};
var instance = new SomethingWithAGeraetemerkmal { Merkmal = Geraetemerkmal.GAS_G4 };
var json = System.Text.Json.JsonSerializer.Serialize(instance, settings);
- json.Should().Be("{\"merkmal\":\"G4\"}");
+ json.Should().Be($"{{\"merkmal\":\"{Geraetemerkmal.GAS_G4.ToString()}\"}}");
}
[TestMethod]
@@ -187,7 +224,7 @@ public void TestSystemText_Write_Nullable()
Merkmal = Geraetemerkmal.GAS_G2P5,
};
var json = System.Text.Json.JsonSerializer.Serialize(instance, settings);
- json.Should().Be("{\"merkmal\":\"G2P5\"}");
+ json.Should().Be("{\"merkmal\":\"GAS_G2P5\"}");
}
[TestMethod]