Skip to content

Commit 8f00c7f

Browse files
committed
Generator performance and cleanup.
1 parent 7758c66 commit 8f00c7f

17 files changed

+507
-430
lines changed

DomainModeling.Generator/Configurators/DomainModelConfiguratorGenerator.DomainEvents.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ internal static void GenerateSourceForDomainEvents(SourceProductionContext conte
1616
var targetNamespace = input.Metadata.AssemblyName;
1717

1818
var configurationText = String.Join($"{Environment.NewLine}\t\t\t", input.Generatables.Select(generatable =>
19-
$"configurator.ConfigureDomainEvent<{generatable.ContainingNamespace}.{generatable.TypeName}>({Environment.NewLine} new {Constants.DomainModelingNamespace}.Configuration.IDomainEventConfigurator.Args() {{ HasDefaultConstructor = {(generatable.ExistingComponents.HasFlag(DomainEventGenerator.DomainEventTypeComponents.DefaultConstructor) ? "true" : "false")} }});"));
19+
$"configurator.ConfigureDomainEvent<{generatable.ContainingNamespace}.{generatable.TypeName}>({Environment.NewLine} new Architect.DomainModeling.Configuration.IDomainEventConfigurator.Args() {{ HasDefaultConstructor = {(generatable.ExistingComponents.HasFlag(DomainEventGenerator.DomainEventTypeComponents.DefaultConstructor) ? "true" : "false")} }});"));
2020

2121
var source = $@"
22-
using {Constants.DomainModelingNamespace};
22+
using Architect.DomainModeling;
2323
2424
#nullable enable
2525
@@ -35,7 +35,7 @@ public static class DomainEventDomainModelConfigurator
3535
/// For example, this can be used to have Entity Framework configure a convention for every matching type in the domain model, in a trim-safe way.
3636
/// </para>
3737
/// </summary>
38-
public static void ConfigureDomainEvents({Constants.DomainModelingNamespace}.Configuration.IDomainEventConfigurator configurator)
38+
public static void ConfigureDomainEvents(Architect.DomainModeling.Configuration.IDomainEventConfigurator configurator)
3939
{{
4040
{configurationText}
4141
}}

DomainModeling.Generator/Configurators/DomainModelConfiguratorGenerator.Entities.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ internal static void GenerateSourceForEntities(SourceProductionContext context,
1616
var targetNamespace = input.Metadata.AssemblyName;
1717

1818
var configurationText = String.Join($"{Environment.NewLine}\t\t\t", input.Generatables.Select(generatable =>
19-
$"configurator.ConfigureEntity<{generatable.ContainingNamespace}.{generatable.TypeName}>({Environment.NewLine} new {Constants.DomainModelingNamespace}.Configuration.IEntityConfigurator.Args() {{ HasDefaultConstructor = {(generatable.ExistingComponents.HasFlag(EntityGenerator.EntityTypeComponents.DefaultConstructor) ? "true" : "false")} }});"));
19+
$"configurator.ConfigureEntity<{generatable.ContainingNamespace}.{generatable.TypeName}>({Environment.NewLine} new Architect.DomainModeling.Configuration.IEntityConfigurator.Args() {{ HasDefaultConstructor = {(generatable.ExistingComponents.HasFlag(EntityGenerator.EntityTypeComponents.DefaultConstructor) ? "true" : "false")} }});"));
2020

2121
var source = $@"
22-
using {Constants.DomainModelingNamespace};
22+
using Architect.DomainModeling;
2323
2424
#nullable enable
2525
@@ -35,7 +35,7 @@ public static class EntityDomainModelConfigurator
3535
/// For example, this can be used to have Entity Framework configure a convention for every matching type in the domain model, in a trim-safe way.
3636
/// </para>
3737
/// </summary>
38-
public static void ConfigureEntities({Constants.DomainModelingNamespace}.Configuration.IEntityConfigurator configurator)
38+
public static void ConfigureEntities(Architect.DomainModeling.Configuration.IEntityConfigurator configurator)
3939
{{
4040
{configurationText}
4141
}}

DomainModeling.Generator/Configurators/DomainModelConfiguratorGenerator.Identities.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ internal static void GenerateSourceForIdentities(
1818
var targetNamespace = input.Metadata.AssemblyName;
1919

2020
var configurationText = String.Join($"{Environment.NewLine}\t\t\t", input.Generatables.Select(generatable => $"""
21-
configurator.ConfigureIdentity<{generatable.ContainingNamespace}.{generatable.TypeName}, {generatable.UnderlyingTypeFullyQualifiedName}>({Environment.NewLine} new {Constants.DomainModelingNamespace}.Configuration.IIdentityConfigurator.Args());
21+
configurator.ConfigureIdentity<{generatable.ContainingNamespace}.{generatable.TypeName}, {generatable.UnderlyingTypeFullyQualifiedName}>({Environment.NewLine} new Architect.DomainModeling.Configuration.IIdentityConfigurator.Args());
2222
"""));
2323

2424
var source = $@"
25-
using {Constants.DomainModelingNamespace};
25+
using Architect.DomainModeling;
2626
2727
#nullable enable
2828
@@ -38,7 +38,7 @@ public static class IdentityDomainModelConfigurator
3838
/// For example, this can be used to have Entity Framework configure a convention for every matching type in the domain model, in a trim-safe way.
3939
/// </para>
4040
/// </summary>
41-
public static void ConfigureIdentities({Constants.DomainModelingNamespace}.Configuration.IIdentityConfigurator configurator)
41+
public static void ConfigureIdentities(Architect.DomainModeling.Configuration.IIdentityConfigurator configurator)
4242
{{
4343
{configurationText}
4444
}}

DomainModeling.Generator/Configurators/DomainModelConfiguratorGenerator.WrapperValueObjects.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ internal static void GenerateSourceForWrapperValueObjects(
1818
var targetNamespace = input.Metadata.AssemblyName;
1919

2020
var configurationText = String.Join($"{Environment.NewLine}\t\t\t", input.Generatables.Select(generatable => $"""
21-
configurator.ConfigureWrapperValueObject<{generatable.ContainingNamespace}.{generatable.TypeName}, {generatable.UnderlyingTypeFullyQualifiedName}>({Environment.NewLine} new {Constants.DomainModelingNamespace}.Configuration.IWrapperValueObjectConfigurator.Args());
21+
configurator.ConfigureWrapperValueObject<{generatable.ContainingNamespace}.{generatable.TypeName}, {generatable.UnderlyingTypeFullyQualifiedName}>({Environment.NewLine} new Architect.DomainModeling.Configuration.IWrapperValueObjectConfigurator.Args());
2222
"""));
2323

2424
var source = $@"
25-
using {Constants.DomainModelingNamespace};
25+
using Architect.DomainModeling;
2626
2727
#nullable enable
2828
@@ -38,7 +38,7 @@ public static class WrapperValueObjectDomainModelConfigurator
3838
/// For example, this can be used to have Entity Framework configure a convention for every matching type in the domain model, in a trim-safe way.
3939
/// </para>
4040
/// </summary>
41-
public static void ConfigureWrapperValueObjects({Constants.DomainModelingNamespace}.Configuration.IWrapperValueObjectConfigurator configurator)
41+
public static void ConfigureWrapperValueObjects(Architect.DomainModeling.Configuration.IWrapperValueObjectConfigurator configurator)
4242
{{
4343
{configurationText}
4444
}}

DomainModeling.Generator/Configurators/EntityFrameworkConfigurationGenerator.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ private static bool IsConfigureConventions(GeneratorSyntaxContext context, Cance
5757
methodSymbol.Name == "ConfigureConventions" &&
5858
methodSymbol.IsOverride &&
5959
methodSymbol.Parameters.Length == 1 &&
60-
methodSymbol.Parameters[0].Type.IsType("ModelConfigurationBuilder", "Microsoft.EntityFrameworkCore"))
60+
methodSymbol.Parameters[0].Type.IsType("ModelConfigurationBuilder", "Microsoft", "EntityFrameworkCore"))
6161
return true;
6262

6363
return false;
@@ -140,8 +140,8 @@ private static void GenerateSource(SourceProductionContext context, (Generatable
140140
using System.Linq.Expressions;
141141
using System.Reflection;
142142
using System.Runtime.CompilerServices;
143-
using {Constants.DomainModelingNamespace};
144-
using {Constants.DomainModelingNamespace}.Conversions;
143+
using Architect.DomainModeling;
144+
using Architect.DomainModeling.Conversions;
145145
using Microsoft.EntityFrameworkCore;
146146
using Microsoft.EntityFrameworkCore.Metadata;
147147
using Microsoft.EntityFrameworkCore.Metadata.Builders;
@@ -257,10 +257,10 @@ file sealed record class DomainModelConfigurator(
257257
: IDomainModelConfigurator;
258258
259259
file sealed record class EntityFrameworkIdentityConfigurator(ModelConfigurationBuilder ConfigurationBuilder)
260-
: {Constants.DomainModelingNamespace}.Configuration.IIdentityConfigurator
260+
: Architect.DomainModeling.Configuration.IIdentityConfigurator
261261
{{
262262
public void ConfigureIdentity<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] TIdentity, TUnderlying>(
263-
in {Constants.DomainModelingNamespace}.Configuration.IIdentityConfigurator.Args _)
263+
in Architect.DomainModeling.Configuration.IIdentityConfigurator.Args _)
264264
where TIdentity : IIdentity<TUnderlying>, ISerializableDomainObject<TIdentity, TUnderlying>
265265
where TUnderlying : notnull, IEquatable<TUnderlying>, IComparable<TUnderlying>
266266
{{
@@ -294,10 +294,10 @@ public IdentityValueObjectConverter()
294294
295295
file sealed record class EntityFrameworkWrapperValueObjectConfigurator(
296296
ModelConfigurationBuilder ConfigurationBuilder)
297-
: {Constants.DomainModelingNamespace}.Configuration.IWrapperValueObjectConfigurator
297+
: Architect.DomainModeling.Configuration.IWrapperValueObjectConfigurator
298298
{{
299299
public void ConfigureWrapperValueObject<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] TWrapper, TValue>(
300-
in {Constants.DomainModelingNamespace}.Configuration.IWrapperValueObjectConfigurator.Args _)
300+
in Architect.DomainModeling.Configuration.IWrapperValueObjectConfigurator.Args _)
301301
where TWrapper : IWrapperValueObject<TValue>, ISerializableDomainObject<TWrapper, TValue>
302302
where TValue : notnull
303303
{{
@@ -325,7 +325,7 @@ public WrapperValueObjectConverter()
325325
326326
file sealed record class EntityFrameworkEntityConfigurator(
327327
Action InvokeConfigurationCallbacks)
328-
: {Constants.DomainModelingNamespace}.Configuration.IEntityConfigurator, {Constants.DomainModelingNamespace}.Configuration.IDomainEventConfigurator, IEntityTypeAddedConvention, IModelFinalizingConvention
328+
: Architect.DomainModeling.Configuration.IEntityConfigurator, Architect.DomainModeling.Configuration.IDomainEventConfigurator, IEntityTypeAddedConvention, IModelFinalizingConvention
329329
{{
330330
private Dictionary<Type, IConventionEntityType> EntityTypeConventionsByType {{ get; }} = new Dictionary<Type, IConventionEntityType>();
331331
@@ -342,7 +342,7 @@ public void ProcessModelFinalizing(IConventionModelBuilder modelBuilder, IConven
342342
}}
343343
344344
public void ConfigureEntity<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] TEntity>(
345-
in {Constants.DomainModelingNamespace}.Configuration.IEntityConfigurator.Args args)
345+
in Architect.DomainModeling.Configuration.IEntityConfigurator.Args args)
346346
where TEntity : IEntity
347347
{{
348348
if (!this.EntityTypeConventionsByType.TryGetValue(typeof(TEntity), out var entityTypeConvention))
@@ -355,7 +355,7 @@ public void ProcessModelFinalizing(IConventionModelBuilder modelBuilder, IConven
355355
}}
356356
357357
public void ConfigureDomainEvent<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] TDomainEvent>(
358-
in {Constants.DomainModelingNamespace}.Configuration.IDomainEventConfigurator.Args args)
358+
in Architect.DomainModeling.Configuration.IDomainEventConfigurator.Args args)
359359
where TDomainEvent : IDomainObject
360360
{{
361361
if (!this.EntityTypeConventionsByType.TryGetValue(typeof(TDomainEvent), out var entityTypeConvention))
@@ -401,7 +401,7 @@ public override InstantiationBinding With(IReadOnlyList<ParameterBinding> parame
401401
}}
402402
";
403403

404-
AddSource(context, source, "EntityFrameworkDomainModelConfigurationExtensions", $"{Constants.DomainModelingNamespace}.EntityFramework");
404+
AddSource(context, source, "EntityFrameworkDomainModelConfigurationExtensions", $"Architect.DomainModeling.EntityFramework");
405405
}
406406

407407
internal sealed record Generatable

DomainModeling.Generator/Constants.cs

Lines changed: 0 additions & 18 deletions
This file was deleted.

DomainModeling.Generator/DomainEventGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ private static bool FilterSyntaxNode(SyntaxNode node, CancellationToken cancella
4949
return null;
5050

5151
// Only with the attribute
52-
if (type.GetAttribute("DomainEventAttribute", Constants.DomainModelingNamespace, arity: 0) is null)
52+
if (type.GetAttribute("DomainEventAttribute", "Architect.DomainModeling", arity: 0) is null)
5353
return null;
5454

5555
// Only concrete
@@ -67,7 +67,7 @@ private static bool FilterSyntaxNode(SyntaxNode node, CancellationToken cancella
6767
var result = new Generatable()
6868
{
6969
TypeLocation = type.Locations.FirstOrDefault(),
70-
IsDomainObject = type.IsOrImplementsInterface(type => type.IsType(Constants.DomainObjectInterfaceName, Constants.DomainModelingNamespace, arity: 0), out _),
70+
IsDomainObject = type.IsOrImplementsInterface(type => type.IsType("IDomainObject", "Architect", "DomainModeling", arity: 0), out _),
7171
TypeName = type.Name, // Non-generic by filter
7272
ContainingNamespace = type.ContainingNamespace.ToString(),
7373
};

DomainModeling.Generator/DomainModeling.Generator.csproj

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>netstandard2.0</TargetFramework>
@@ -22,11 +22,8 @@
2222
</ItemGroup>
2323

2424
<ItemGroup>
25-
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0">
26-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
27-
<PrivateAssets>all</PrivateAssets>
28-
</PackageReference>
29-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" PrivateAssets="all" />
25+
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0" PrivateAssets="All" />
26+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" PrivateAssets="All" />
3027
</ItemGroup>
3128

3229
</Project>

0 commit comments

Comments
 (0)