@@ -127,6 +127,8 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
127
127
// All java packages present in this bazel package.
128
128
allPackageNames := sorted_set .NewSortedSetFn ([]types.PackageName {}, types .PackageNameLess )
129
129
130
+ annotationProcessorClasses := sorted_set .NewSortedSetFn (nil , types .ClassNameLess )
131
+
130
132
if isModule {
131
133
for mRel , mJavaPkg := range l .javaPackageCache {
132
134
if ! strings .HasPrefix (mRel , args .Rel ) {
@@ -152,6 +154,9 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
152
154
accumulateJavaFile (cfg , testJavaFiles , testHelperJavaFiles , separateTestJavaFiles , file , mJavaPkg .PerClassMetadata , log )
153
155
}
154
156
}
157
+ for _ , annotationClass := range mJavaPkg .AllAnnotations ().SortedSlice () {
158
+ annotationProcessorClasses .AddAll (cfg .GetAnnotationProcessorPluginClasses (annotationClass ))
159
+ }
155
160
}
156
161
} else {
157
162
allPackageNames .Add (javaPkg .Name )
@@ -174,6 +179,9 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
174
179
productionJavaFiles .Add (path )
175
180
}
176
181
}
182
+ for _ , annotationClass := range javaPkg .AllAnnotations ().SortedSlice () {
183
+ annotationProcessorClasses .AddAll (cfg .GetAnnotationProcessorPluginClasses (annotationClass ))
184
+ }
177
185
}
178
186
179
187
allPackageNamesSlice := allPackageNames .SortedSlice ()
@@ -192,7 +200,7 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
192
200
}
193
201
194
202
if productionJavaFiles .Len () > 0 {
195
- l .generateJavaLibrary (args .File , args .Rel , filepath .Base (args .Rel ), productionJavaFiles .SortedSlice (), allPackageNames , nonLocalProductionJavaImports , nonLocalJavaExports , false , javaLibraryKind , & res )
203
+ l .generateJavaLibrary (args .File , args .Rel , filepath .Base (args .Rel ), productionJavaFiles .SortedSlice (), allPackageNames , nonLocalProductionJavaImports , nonLocalJavaExports , annotationProcessorClasses , false , javaLibraryKind , & res )
196
204
}
197
205
198
206
var testHelperJavaClasses * sorted_set.SortedSet [types.ClassName ]
@@ -228,7 +236,7 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
228
236
testJavaImportsWithHelpers .Add (tf .pkg )
229
237
srcs = append (srcs , tf .pathRelativeToBazelWorkspaceRoot )
230
238
}
231
- l .generateJavaLibrary (args .File , args .Rel , filepath .Base (args .Rel ), srcs , packages , testJavaImports , nonLocalJavaExports , true , javaLibraryKind , & res )
239
+ l .generateJavaLibrary (args .File , args .Rel , filepath .Base (args .Rel ), srcs , packages , testJavaImports , nonLocalJavaExports , annotationProcessorClasses , true , javaLibraryKind , & res )
232
240
}
233
241
}
234
242
@@ -240,7 +248,7 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
240
248
case "file" :
241
249
for _ , tf := range testJavaFiles .SortedSlice () {
242
250
separateJavaTestReasons := separateTestJavaFiles [tf ]
243
- l .generateJavaTest (args .File , args .Rel , cfg .MavenRepositoryName (), tf , isModule , testJavaImportsWithHelpers , nil , separateJavaTestReasons .wrapper , separateJavaTestReasons .attributes , & res )
251
+ l .generateJavaTest (args .File , args .Rel , cfg .MavenRepositoryName (), tf , isModule , testJavaImportsWithHelpers , annotationProcessorClasses , nil , separateJavaTestReasons .wrapper , separateJavaTestReasons .attributes , & res )
244
252
}
245
253
246
254
case "suite" :
@@ -268,6 +276,7 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
268
276
packageNames ,
269
277
cfg .MavenRepositoryName (),
270
278
testJavaImportsWithHelpers ,
279
+ annotationProcessorClasses ,
271
280
cfg .GetCustomJavaTestFileSuffixes (),
272
281
testHelperJavaFiles .Len () > 0 ,
273
282
& res ,
@@ -284,7 +293,7 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes
284
293
testHelperDep = ptr (testHelperLibname (suiteName ))
285
294
}
286
295
separateJavaTestReasons := separateTestJavaFiles [src ]
287
- l .generateJavaTest (args .File , args .Rel , cfg .MavenRepositoryName (), src , isModule , testJavaImportsWithHelpers , testHelperDep , separateJavaTestReasons .wrapper , separateJavaTestReasons .attributes , & res )
296
+ l .generateJavaTest (args .File , args .Rel , cfg .MavenRepositoryName (), src , isModule , testJavaImportsWithHelpers , annotationProcessorClasses , testHelperDep , separateJavaTestReasons .wrapper , separateJavaTestReasons .attributes , & res )
288
297
}
289
298
}
290
299
}
@@ -415,7 +424,7 @@ func addFilteringOutOwnPackage(to *sorted_set.SortedSet[types.PackageName], from
415
424
416
425
func accumulateJavaFile (cfg * javaconfig.Config , testJavaFiles , testHelperJavaFiles * sorted_set.SortedSet [javaFile ], separateTestJavaFiles map [javaFile ]separateJavaTestReasons , file javaFile , perClassMetadata map [string ]java.PerClassMetadata , log zerolog.Logger ) {
417
426
if cfg .IsJavaTestFile (filepath .Base (file .pathRelativeToBazelWorkspaceRoot )) {
418
- annotationClassNames := sorted_set.NewSortedSet [ string ](nil )
427
+ annotationClassNames := sorted_set .NewSortedSetFn [types. ClassName ](nil , types . ClassNameLess )
419
428
metadataForClass := perClassMetadata [file .ClassName ().FullyQualifiedClassName ()]
420
429
annotationClassNames .AddAll (metadataForClass .AnnotationClassNames )
421
430
for _ , key := range metadataForClass .MethodAnnotationClassNames .Keys () {
@@ -425,15 +434,15 @@ func accumulateJavaFile(cfg *javaconfig.Config, testJavaFiles, testHelperJavaFil
425
434
perFileAttrs := make (map [string ]bzl.Expr )
426
435
wrapper := ""
427
436
for _ , annotationClassName := range annotationClassNames .SortedSlice () {
428
- if attrs , ok := cfg .AttributesForAnnotation (annotationClassName ); ok {
437
+ if attrs , ok := cfg .AttributesForAnnotation (annotationClassName . FullyQualifiedClassName () ); ok {
429
438
for k , v := range attrs {
430
439
if old , ok := perFileAttrs [k ]; ok {
431
440
log .Error ().Str ("file" , file .pathRelativeToBazelWorkspaceRoot ).Msgf ("Saw conflicting attr overrides from annotations for attribute %v: %v and %v. Picking one at random." , k , old , v )
432
441
}
433
442
perFileAttrs [k ] = v
434
443
}
435
444
}
436
- newWrapper , ok := cfg .WrapperForAnnotation (annotationClassName )
445
+ newWrapper , ok := cfg .WrapperForAnnotation (annotationClassName . FullyQualifiedClassName () )
437
446
if ok {
438
447
if wrapper != "" {
439
448
log .Error ().Str ("file" , file .pathRelativeToBazelWorkspaceRoot ).Msgf ("Saw conflicting wrappers from annotations: %v and %v. Picking one at random." , wrapper , newWrapper )
@@ -453,7 +462,7 @@ func accumulateJavaFile(cfg *javaconfig.Config, testJavaFiles, testHelperJavaFil
453
462
}
454
463
}
455
464
456
- func (l javaLang ) generateJavaLibrary (file * rule.File , pathToPackageRelativeToBazelWorkspace string , name string , srcsRelativeToBazelWorkspace []string , packages , imports * sorted_set.SortedSet [types.PackageName ], exports * sorted_set.SortedSet [types.PackageName ], testonly bool , javaLibraryRuleKind string , res * language.GenerateResult ) {
465
+ func (l javaLang ) generateJavaLibrary (file * rule.File , pathToPackageRelativeToBazelWorkspace string , name string , srcsRelativeToBazelWorkspace []string , packages , imports * sorted_set.SortedSet [types.PackageName ], exports * sorted_set.SortedSet [types.PackageName ], annotationProcessorClasses * sorted_set. SortedSet [types. ClassName ], testonly bool , javaLibraryRuleKind string , res * language.GenerateResult ) {
457
466
const ruleKind = "java_library"
458
467
r := rule .NewRule (ruleKind , name )
459
468
@@ -487,6 +496,7 @@ func (l javaLang) generateJavaLibrary(file *rule.File, pathToPackageRelativeToBa
487
496
PackageNames : packages ,
488
497
ImportedPackageNames : imports ,
489
498
ExportedPackageNames : exports ,
499
+ AnnotationProcessors : annotationProcessorClasses ,
490
500
}
491
501
res .Imports = append (res .Imports , resolveInput )
492
502
}
@@ -511,7 +521,7 @@ func (l javaLang) generateJavaBinary(file *rule.File, m types.ClassName, libName
511
521
})
512
522
}
513
523
514
- func (l javaLang ) generateJavaTest (file * rule.File , pathToPackageRelativeToBazelWorkspace string , mavenRepositoryName string , f javaFile , includePackageInName bool , imports * sorted_set.SortedSet [types.PackageName ], depOnTestHelpers * string , wrapper string , extraAttributes map [string ]bzl.Expr , res * language.GenerateResult ) {
524
+ func (l javaLang ) generateJavaTest (file * rule.File , pathToPackageRelativeToBazelWorkspace string , mavenRepositoryName string , f javaFile , includePackageInName bool , imports * sorted_set.SortedSet [types.PackageName ], annotationProcessorClasses * sorted_set. SortedSet [types. ClassName ], depOnTestHelpers * string , wrapper string , extraAttributes map [string ]bzl.Expr , res * language.GenerateResult ) {
515
525
className := f .ClassName ()
516
526
fullyQualifiedTestClass := className .FullyQualifiedClassName ()
517
527
var testName string
@@ -571,6 +581,7 @@ func (l javaLang) generateJavaTest(file *rule.File, pathToPackageRelativeToBazel
571
581
resolveInput := types.ResolveInput {
572
582
PackageNames : sorted_set .NewSortedSetFn ([]types.PackageName {f .pkg }, types .PackageNameLess ),
573
583
ImportedPackageNames : testImports ,
584
+ AnnotationProcessors : annotationProcessorClasses ,
574
585
}
575
586
res .Imports = append (res .Imports , resolveInput )
576
587
}
@@ -598,7 +609,7 @@ var junit5RuntimeDeps = []string{
598
609
"org.junit.platform:junit-platform-reporting" ,
599
610
}
600
611
601
- func (l javaLang ) generateJavaTestSuite (file * rule.File , name string , srcs []string , packageNames * sorted_set.SortedSet [types.PackageName ], mavenRepositoryName string , imports * sorted_set.SortedSet [types.PackageName ], customTestSuffixes * []string , hasHelpers bool , res * language.GenerateResult ) {
612
+ func (l javaLang ) generateJavaTestSuite (file * rule.File , name string , srcs []string , packageNames * sorted_set.SortedSet [types.PackageName ], mavenRepositoryName string , imports * sorted_set.SortedSet [types.PackageName ], annotationProcessorClasses * sorted_set. SortedSet [types. ClassName ], customTestSuffixes * []string , hasHelpers bool , res * language.GenerateResult ) {
602
613
const ruleKind = "java_test_suite"
603
614
r := rule .NewRule (ruleKind , name )
604
615
r .SetAttr ("srcs" , srcs )
@@ -636,6 +647,7 @@ func (l javaLang) generateJavaTestSuite(file *rule.File, name string, srcs []str
636
647
resolveInput := types.ResolveInput {
637
648
PackageNames : packageNames ,
638
649
ImportedPackageNames : suiteImports ,
650
+ AnnotationProcessors : annotationProcessorClasses ,
639
651
}
640
652
res .Imports = append (res .Imports , resolveInput )
641
653
}
0 commit comments