Skip to content

Commit 9349e6b

Browse files
authored
Update lambda annotations to eagerly build Function Handler type
1 parent eec92d1 commit 9349e6b

14 files changed

+93
-18
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"Projects": [
3+
{
4+
"Name": "Amazon.Lambda.Annotations",
5+
"Type": "Minor",
6+
"ChangelogMessages": [
7+
"Eagerly build Function Handler inside the Generated class\u0027s constructor"
8+
]
9+
}
10+
]
11+
}

Libraries/src/Amazon.Lambda.Annotations.SourceGenerator/Templates/FieldsAndConstructor.cs

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace Amazon.Lambda.Annotations.SourceGenerator.Templates
1919
/// Class to produce the template output
2020
/// </summary>
2121

22-
#line 1 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
22+
#line 1 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
2323
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
2424
public partial class FieldsAndConstructor : FieldsAndConstructorBase
2525
{
@@ -30,7 +30,7 @@ public partial class FieldsAndConstructor : FieldsAndConstructorBase
3030
public virtual string TransformText()
3131
{
3232

33-
#line 7 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
33+
#line 7 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
3434

3535
if (_model.LambdaMethod.UsingDependencyInjection)
3636
{
@@ -40,7 +40,7 @@ public virtual string TransformText()
4040
#line hidden
4141
this.Write(" private readonly ServiceProvider serviceProvider;\r\n");
4242

43-
#line 12 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
43+
#line 12 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
4444

4545
}
4646
else
@@ -51,28 +51,28 @@ public virtual string TransformText()
5151
#line hidden
5252
this.Write(" private readonly ");
5353

54-
#line 17 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
54+
#line 17 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
5555
this.Write(this.ToStringHelper.ToStringWithCulture(_model.LambdaMethod.ContainingType.Name));
5656

5757
#line default
5858
#line hidden
5959
this.Write(" ");
6060

61-
#line 17 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
61+
#line 17 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
6262
this.Write(this.ToStringHelper.ToStringWithCulture(_model.LambdaMethod.ContainingType.Name.ToCamelCase()));
6363

6464
#line default
6565
#line hidden
6666
this.Write(";\r\n private readonly ");
6767

68-
#line 18 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
68+
#line 18 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
6969
this.Write(this.ToStringHelper.ToStringWithCulture(_model.SerializerInfo.SerializerName));
7070

7171
#line default
7272
#line hidden
7373
this.Write(" serializer;\r\n");
7474

75-
#line 19 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
75+
#line 19 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
7676

7777
}
7878

@@ -87,14 +87,14 @@ public virtual string TransformText()
8787
/// </summary>
8888
public ");
8989

90-
#line 28 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
90+
#line 28 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
9191
this.Write(this.ToStringHelper.ToStringWithCulture(_model.GeneratedMethod.ContainingType.Name));
9292

9393
#line default
9494
#line hidden
9595
this.Write("()\r\n {\r\n SetExecutionEnvironment();\r\n");
9696

97-
#line 31 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
97+
#line 31 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
9898

9999
if (_model.LambdaMethod.UsingDependencyInjection)
100100
{
@@ -108,29 +108,45 @@ public virtual string TransformText()
108108
// To use a different lifetime, specify the lifetime in Startup.ConfigureServices(IServiceCollection) method.
109109
services.AddSingleton<");
110110

111-
#line 39 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
111+
#line 39 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
112112
this.Write(this.ToStringHelper.ToStringWithCulture(_model.LambdaMethod.ContainingType.Name));
113113

114114
#line default
115115
#line hidden
116116
this.Write(">();\r\n services.AddSingleton<");
117117

118-
#line 40 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
118+
#line 40 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
119119
this.Write(this.ToStringHelper.ToStringWithCulture(_model.SerializerInfo.SerializerName));
120120

121121
#line default
122122
#line hidden
123123
this.Write(">();\r\n\r\n var startup = new ");
124124

125-
#line 42 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
125+
#line 42 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
126126
this.Write(this.ToStringHelper.ToStringWithCulture(_model.StartupType.FullName));
127127

128128
#line default
129129
#line hidden
130130
this.Write("();\r\n startup.ConfigureServices(services);\r\n serviceProvide" +
131-
"r = services.BuildServiceProvider();\r\n");
131+
"r = services.BuildServiceProvider();\r\n\r\n // Intentionally eagerly bui" +
132+
"ld ");
132133

133-
#line 45 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
134+
#line 46 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
135+
this.Write(this.ToStringHelper.ToStringWithCulture(_model.LambdaMethod.ContainingType.Name));
136+
137+
#line default
138+
#line hidden
139+
this.Write(" and its dependencies.\r\n // This causes time spent in the Constructor " +
140+
"to appear on INIT_REPORTs\r\n _ = serviceProvider.GetRequiredService<");
141+
142+
#line 48 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
143+
this.Write(this.ToStringHelper.ToStringWithCulture(_model.LambdaMethod.ContainingType.Name));
144+
145+
#line default
146+
#line hidden
147+
this.Write(">();\r\n");
148+
149+
#line 49 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
134150

135151
}
136152
else
@@ -141,28 +157,28 @@ public virtual string TransformText()
141157
#line hidden
142158
this.Write(" ");
143159

144-
#line 50 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
160+
#line 54 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
145161
this.Write(this.ToStringHelper.ToStringWithCulture(_model.LambdaMethod.ContainingType.Name.ToCamelCase()));
146162

147163
#line default
148164
#line hidden
149165
this.Write(" = new ");
150166

151-
#line 50 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
167+
#line 54 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
152168
this.Write(this.ToStringHelper.ToStringWithCulture(_model.LambdaMethod.ContainingType.Name));
153169

154170
#line default
155171
#line hidden
156172
this.Write("();\r\n serializer = new ");
157173

158-
#line 51 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
174+
#line 55 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
159175
this.Write(this.ToStringHelper.ToStringWithCulture(_model.SerializerInfo.SerializerName));
160176

161177
#line default
162178
#line hidden
163179
this.Write("();\r\n");
164180

165-
#line 52 "C:\codebase\V3\HLL\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
181+
#line 56 "C:\projects\aws\aws-lambda-dotnet\Libraries\src\Amazon.Lambda.Annotations.SourceGenerator\Templates\FieldsAndConstructor.tt"
166182

167183
}
168184

Libraries/src/Amazon.Lambda.Annotations.SourceGenerator/Templates/FieldsAndConstructor.tt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@
4242
var startup = new <#= _model.StartupType.FullName #>();
4343
startup.ConfigureServices(services);
4444
serviceProvider = services.BuildServiceProvider();
45+
46+
// Intentionally eagerly build <#= _model.LambdaMethod.ContainingType.Name #> and its dependencies.
47+
// This causes time spent in the Constructor to appear on INIT_REPORTs
48+
_ = serviceProvider.GetRequiredService<<#= _model.LambdaMethod.ContainingType.Name #>>();
4549
<#
4650
}
4751
else

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/Functions_AsyncStartupToLower_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public FunctionsZipOutput_ToLower_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build FunctionsZipOutput and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<FunctionsZipOutput>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/Functions_AsyncStartupToUpper_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public Functions_ToUpper_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build Functions and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<Functions>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/GreeterExecutable_SayHelloAsync_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public Greeter_SayHelloAsync_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build Greeter and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<Greeter>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/GreeterExecutable_SayHello_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public Greeter_SayHello_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build Greeter and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<Greeter>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/SimpleCalculator_Add_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public SimpleCalculator_Add_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build SimpleCalculator and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<SimpleCalculator>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/SimpleCalculator_DivideAsync_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public SimpleCalculator_DivideAsync_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build SimpleCalculator and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<SimpleCalculator>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/SimpleCalculator_Multiply_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public SimpleCalculator_Multiply_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build SimpleCalculator and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<SimpleCalculator>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/SimpleCalculator_Pi_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public SimpleCalculator_Pi_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build SimpleCalculator and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<SimpleCalculator>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/SimpleCalculator_Random_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public SimpleCalculator_Random_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build SimpleCalculator and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<SimpleCalculator>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/SimpleCalculator_Randoms_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public SimpleCalculator_Randoms_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build SimpleCalculator and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<SimpleCalculator>();
3640
}
3741

3842
/// <summary>

Libraries/test/Amazon.Lambda.Annotations.SourceGenerators.Tests/Snapshots/SimpleCalculator_Subtract_Generated.g.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public SimpleCalculator_Subtract_Generated()
3333
var startup = new TestServerlessApp.Startup();
3434
startup.ConfigureServices(services);
3535
serviceProvider = services.BuildServiceProvider();
36+
37+
// Intentionally eagerly build SimpleCalculator and its dependencies.
38+
// This causes time spent in the Constructor to appear on INIT_REPORTs
39+
_ = serviceProvider.GetRequiredService<SimpleCalculator>();
3640
}
3741

3842
/// <summary>

0 commit comments

Comments
 (0)