Skip to content

Commit

Permalink
CONFIGURATION compiler directive is missing from Akka.Persistence.Sql…
Browse files Browse the repository at this point in the history
….Common netstandard2.0 build target (#4345)

* Add System.Configuration.ConfigurationManager support for NET standard 2.0 build.

* Possible null exception, need to check that the ConnectionStrings collection returns an object instance before accessing the ConnectionString property.

* Simple rudimentary test for App.config access. This could not be tested from unit testing because Microsoft broke ConfigurationManager. Again.
  • Loading branch information
Arkatufus committed Mar 18, 2020
1 parent 345c601 commit 49771c1
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/common.props
Expand Up @@ -22,6 +22,7 @@
<FluentAssertionsVersion>4.14.0</FluentAssertionsVersion>
<FsCheckVersion>2.14.2</FsCheckVersion>
<HoconVersion>2.0.3</HoconVersion>
<ConfigurationManagerVersion>4.7.0</ConfigurationManagerVersion>
<AkkaPackageTags>akka;actors;actor model;Akka;concurrency</AkkaPackageTags>
</PropertyGroup>
<PropertyGroup>
Expand Down
Expand Up @@ -9,6 +9,10 @@
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="System.Configuration.ConfigurationManager" Version="$(ConfigurationManagerVersion)" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\core\Akka.Persistence\Akka.Persistence.csproj" />
</ItemGroup>
Expand All @@ -27,7 +31,7 @@
</PropertyGroup>

<PropertyGroup Condition=" '$(TargetFramework)' == '$(NetStandardLibVersion)' ">
<DefineConstants>$(DefineConstants);CORECLR</DefineConstants>
<DefineConstants>$(DefineConstants);CORECLR;CONFIGURATION</DefineConstants>
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
Expand Down
Expand Up @@ -259,7 +259,7 @@ protected BatchingSqlJournalSetup(Config config, QueryConfiguration namingConven
if (string.IsNullOrWhiteSpace(connectionString))
{
connectionString = System.Configuration.ConfigurationManager
.ConnectionStrings[config.GetString("connection-string-name", "DefaultConnection")]
.ConnectionStrings[config.GetString("connection-string-name", "DefaultConnection")]?
.ConnectionString;
}
#endif
Expand Down
25 changes: 25 additions & 0 deletions src/examples/AppConfig/App.config
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>

<configSections>
<section name="akka" type="Akka.Configuration.Hocon.AkkaConfigurationSection, Akka" />
</configSections>

<connectionStrings>
<clear/>
<add name="myConnectionString" connectionString="myDB://MyConnectionString"/>
</connectionStrings>

<akka>
<hocon>
<![CDATA[
akka.persistence.journal.sqlite = {
connection-string-name = myConnectionString
replay-filter = {
mode = off
}
}
]]>
</hocon>
</akka>
</configuration>
20 changes: 20 additions & 0 deletions src/examples/AppConfig/AppConfig.csproj
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<None Remove="App.config" />
</ItemGroup>

<ItemGroup>
<Content Include="App.config" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\contrib\persistence\Akka.Persistence.Sqlite\Akka.Persistence.Sqlite.csproj" />
</ItemGroup>

</Project>
26 changes: 26 additions & 0 deletions src/examples/AppConfig/Program.cs
@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using Akka.Actor;
using Akka.Configuration;
using Akka.Persistence.Sql.Common;
using Akka.Persistence.Sqlite.Journal;
using Akka.Persistence.Sqlite;
using Akka.Util.Internal;

namespace AppConfig
{
class Program
{
static void Main(string[] args)
{
var system = ActorSystem.Create(Guid.NewGuid().ToString(), ConfigurationFactory.Load());
SqlitePersistence.Get(system);
var config = system.Settings.Config.GetConfig("akka.persistence.journal.sqlite");
var setup = new BatchingSqliteJournalSetup(config);

Console.WriteLine("If running properly, BatchingSqliteJournalSetup.ConnectionString should return 'myDB://MyConnectionString'.");
Console.WriteLine($"Connection string is: {setup.ConnectionString}");
}
}
}

0 comments on commit 49771c1

Please sign in to comment.