Skip to content

Commit dd20289

Browse files
committed
improve extension API
- explicitly specified that CDI implementations don't have to accept custom implemetations of the `jakarta.enterprise.lang.model` and `jakarta.enterprise.inject.build.compatible.spi` interfaces - moved to Jakarta Annotation 2.1.0-B1, removed `@ExtensionPriority` and specified that `@Priority` should be used on extension methods - specified that `AnnotationBuilder.build` will throw if some members of the annotation type were not defined - adjusted `AnnotationBuilder` so that its methods no longer accept varargs; arrays must be passed in explicitly to avoid ambiguity in case of single-element arrays - added `InterceptorInfo` (extending `BeanInfo`) to provide information about interceptors, and allowed `@Processing` methods to declare parameters of type `InterceptorInfo` - adjusted `@Enhancement` so that parameters of type `DeclarationInfo` and `DeclarationConfig` can no longer be declared; it is not clear what is the full set of matching values - replaced the use of `Map<String, Object>` in synthetic components functions by a dedicated `Parameters` interface - adjusted synthetic component builders to allow defining a parameter of an enum type, as well as using `ClassInfo` for defining a parameter of a `Class` type - improved `ParameterizedType` to provide access to the type (`ClassType`) of the generic class, in addition to the declaration (`ClassInfo`) - replaced abbreviated forms "isn't", "doesn't" and "can't" with their longer forms "is not", "does not" and "cannot"
1 parent 3c3d15c commit dd20289

31 files changed

+430
-151
lines changed

api/pom.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129

130130

131131
<properties>
132+
<annotation.api.version>2.1.0-B1</annotation.api.version>
132133
<atinject.api.version>2.0.0</atinject.api.version>
133134
<uel.api.version>4.0.0</uel.api.version>
134135
<interceptor.api.version>2.0.0</interceptor.api.version>
@@ -154,6 +155,12 @@
154155
<version>6.8.8</version>
155156
</dependency>
156157

158+
<dependency>
159+
<groupId>jakarta.annotation</groupId>
160+
<artifactId>jakarta.annotation-api</artifactId>
161+
<version>${annotation.api.version}</version>
162+
</dependency>
163+
157164
<dependency>
158165
<groupId>jakarta.inject</groupId>
159166
<artifactId>jakarta.inject-api</artifactId>
@@ -182,6 +189,11 @@
182189
</dependencyManagement>
183190

184191
<dependencies>
192+
<dependency>
193+
<groupId>jakarta.annotation</groupId>
194+
<artifactId>jakarta.annotation-api</artifactId>
195+
</dependency>
196+
185197
<dependency>
186198
<groupId>jakarta.el</groupId>
187199
<artifactId>jakarta.el-api</artifactId>
@@ -190,6 +202,12 @@
190202
<dependency>
191203
<groupId>jakarta.interceptor</groupId>
192204
<artifactId>jakarta.interceptor-api</artifactId>
205+
<exclusions>
206+
<exclusion>
207+
<groupId>jakarta.annotation</groupId>
208+
<artifactId>jakarta.annotation-api</artifactId>
209+
</exclusion>
210+
</exclusions>
193211
</dependency>
194212

195213
<dependency>

api/src/main/java/jakarta/enterprise/inject/build/compatible/spi/AnnotationBuilder.java

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
* <li>call {@link #build()} to create an {@link AnnotationInfo}.</li>
1717
* </ol>
1818
* One builder instance should not be used to create multiple annotations.
19+
* <p>
20+
* Note that values of <em>all</em> members of given annotation type must be defined
21+
* before calling {@code build()}. If they are not, {@code build()} will throw an exception.
1922
*
2023
* @since 4.0
2124
*/
@@ -67,7 +70,7 @@ default AnnotationBuilder value(boolean value) {
6770
* @param values the boolean array, must not be {@code null}
6871
* @return this {@code AnnotationBuilder}
6972
*/
70-
default AnnotationBuilder value(boolean... values) {
73+
default AnnotationBuilder value(boolean[] values) {
7174
return member(AnnotationMember.VALUE, values);
7275
}
7376

@@ -87,7 +90,7 @@ default AnnotationBuilder value(byte value) {
8790
* @param values the byte array, must not be {@code null}
8891
* @return this {@code AnnotationBuilder}
8992
*/
90-
default AnnotationBuilder value(byte... values) {
93+
default AnnotationBuilder value(byte[] values) {
9194
return member(AnnotationMember.VALUE, values);
9295
}
9396

@@ -107,7 +110,7 @@ default AnnotationBuilder value(short value) {
107110
* @param values the short array, must not be {@code null}
108111
* @return this {@code AnnotationBuilder}
109112
*/
110-
default AnnotationBuilder value(short... values) {
113+
default AnnotationBuilder value(short[] values) {
111114
return member(AnnotationMember.VALUE, values);
112115
}
113116

@@ -127,7 +130,7 @@ default AnnotationBuilder value(int value) {
127130
* @param values the int array, must not be {@code null}
128131
* @return this {@code AnnotationBuilder}
129132
*/
130-
default AnnotationBuilder value(int... values) {
133+
default AnnotationBuilder value(int[] values) {
131134
return member(AnnotationMember.VALUE, values);
132135
}
133136

@@ -147,7 +150,7 @@ default AnnotationBuilder value(long value) {
147150
* @param values the long array, must not be {@code null}
148151
* @return this {@code AnnotationBuilder}
149152
*/
150-
default AnnotationBuilder value(long... values) {
153+
default AnnotationBuilder value(long[] values) {
151154
return member(AnnotationMember.VALUE, values);
152155
}
153156

@@ -167,7 +170,7 @@ default AnnotationBuilder value(float value) {
167170
* @param values the float array, must not be {@code null}
168171
* @return this {@code AnnotationBuilder}
169172
*/
170-
default AnnotationBuilder value(float... values) {
173+
default AnnotationBuilder value(float[] values) {
171174
return member(AnnotationMember.VALUE, values);
172175
}
173176

@@ -187,7 +190,7 @@ default AnnotationBuilder value(double value) {
187190
* @param values the double array, must not be {@code null}
188191
* @return this {@code AnnotationBuilder}
189192
*/
190-
default AnnotationBuilder value(double... values) {
193+
default AnnotationBuilder value(double[] values) {
191194
return member(AnnotationMember.VALUE, values);
192195
}
193196

@@ -207,7 +210,7 @@ default AnnotationBuilder value(char value) {
207210
* @param values the char array, must not be {@code null}
208211
* @return this {@code AnnotationBuilder}
209212
*/
210-
default AnnotationBuilder value(char... values) {
213+
default AnnotationBuilder value(char[] values) {
211214
return member(AnnotationMember.VALUE, values);
212215
}
213216

@@ -227,7 +230,7 @@ default AnnotationBuilder value(String value) {
227230
* @param values the String array, must not be {@code null} or contain {@code null}
228231
* @return this {@code AnnotationBuilder}
229232
*/
230-
default AnnotationBuilder value(String... values) {
233+
default AnnotationBuilder value(String[] values) {
231234
return member(AnnotationMember.VALUE, values);
232235
}
233236

@@ -247,7 +250,7 @@ default AnnotationBuilder value(Enum<?> value) {
247250
* @param values the enum array, must not be {@code null} or contain {@code null}
248251
* @return this {@code AnnotationBuilder}
249252
*/
250-
default AnnotationBuilder value(Enum<?>... values) {
253+
default AnnotationBuilder value(Enum<?>[] values) {
251254
return member(AnnotationMember.VALUE, values);
252255
}
253256

@@ -269,7 +272,7 @@ default AnnotationBuilder value(Class<? extends Enum<?>> enumType, String enumVa
269272
* @param enumValues names of the enum constants, must not be {@code null} or contain {@code null}
270273
* @return this {@code AnnotationBuilder}
271274
*/
272-
default AnnotationBuilder value(Class<? extends Enum<?>> enumType, String... enumValues) {
275+
default AnnotationBuilder value(Class<? extends Enum<?>> enumType, String[] enumValues) {
273276
return member(AnnotationMember.VALUE, enumType, enumValues);
274277
}
275278

@@ -291,7 +294,7 @@ default AnnotationBuilder value(ClassInfo enumType, String enumValue) {
291294
* @param enumValues names of the enum constants, must not be {@code null} or contain {@code null}
292295
* @return this {@code AnnotationBuilder}
293296
*/
294-
default AnnotationBuilder value(ClassInfo enumType, String... enumValues) {
297+
default AnnotationBuilder value(ClassInfo enumType, String[] enumValues) {
295298
return member(AnnotationMember.VALUE, enumType, enumValues);
296299
}
297300

@@ -311,7 +314,7 @@ default AnnotationBuilder value(Class<?> value) {
311314
* @param values the class array, must not be {@code null} or contain {@code null}
312315
* @return this {@code AnnotationBuilder}
313316
*/
314-
default AnnotationBuilder value(Class<?>... values) {
317+
default AnnotationBuilder value(Class<?>[] values) {
315318
return member(AnnotationMember.VALUE, values);
316319
}
317320

@@ -331,7 +334,7 @@ default AnnotationBuilder value(ClassInfo value) {
331334
* @param values the class array, must not be {@code null} or contain {@code null}
332335
* @return this {@code AnnotationBuilder}
333336
*/
334-
default AnnotationBuilder value(ClassInfo... values) {
337+
default AnnotationBuilder value(ClassInfo[] values) {
335338
return member(AnnotationMember.VALUE, values);
336339
}
337340

@@ -371,7 +374,7 @@ default AnnotationBuilder value(Type value) {
371374
* @return this {@code AnnotationBuilder}
372375
* @throws IllegalArgumentException if any given type is invalid, as described above
373376
*/
374-
default AnnotationBuilder value(Type... values) {
377+
default AnnotationBuilder value(Type[] values) {
375378
return member(AnnotationMember.VALUE, values);
376379
}
377380

@@ -391,7 +394,7 @@ default AnnotationBuilder value(AnnotationInfo value) {
391394
* @param values the annotation array, must not be {@code null} or contain {@code null}
392395
* @return this {@code AnnotationBuilder}
393396
*/
394-
default AnnotationBuilder value(AnnotationInfo... values) {
397+
default AnnotationBuilder value(AnnotationInfo[] values) {
395398
return member(AnnotationMember.VALUE, values);
396399
}
397400

@@ -411,7 +414,7 @@ default AnnotationBuilder value(Annotation value) {
411414
* @param values the annotation array, must not be {@code null} or contain {@code null}
412415
* @return this {@code AnnotationBuilder}
413416
*/
414-
default AnnotationBuilder value(Annotation... values) {
417+
default AnnotationBuilder value(Annotation[] values) {
415418
return member(AnnotationMember.VALUE, values);
416419
}
417420

@@ -440,7 +443,7 @@ default AnnotationBuilder value(Annotation... values) {
440443
* @param values the boolean array, must not be {@code null}
441444
* @return this {@code AnnotationBuilder}
442445
*/
443-
AnnotationBuilder member(String name, boolean... values);
446+
AnnotationBuilder member(String name, boolean[] values);
444447

445448
/**
446449
* Adds a byte-valued annotation member with given {@code name}.
@@ -458,7 +461,7 @@ default AnnotationBuilder value(Annotation... values) {
458461
* @param values the byte array, must not be {@code null}
459462
* @return this {@code AnnotationBuilder}
460463
*/
461-
AnnotationBuilder member(String name, byte... values);
464+
AnnotationBuilder member(String name, byte[] values);
462465

463466
/**
464467
* Adds a short-valued annotation member with given {@code name}.
@@ -476,7 +479,7 @@ default AnnotationBuilder value(Annotation... values) {
476479
* @param values the short array, must not be {@code null}
477480
* @return this {@code AnnotationBuilder}
478481
*/
479-
AnnotationBuilder member(String name, short... values);
482+
AnnotationBuilder member(String name, short[] values);
480483

481484
/**
482485
* Adds an int-valued annotation member with given {@code name}.
@@ -494,7 +497,7 @@ default AnnotationBuilder value(Annotation... values) {
494497
* @param values the int array, must not be {@code null}
495498
* @return this {@code AnnotationBuilder}
496499
*/
497-
AnnotationBuilder member(String name, int... values);
500+
AnnotationBuilder member(String name, int[] values);
498501

499502
/**
500503
* Adds a long-valued annotation member with given {@code name}.
@@ -512,7 +515,7 @@ default AnnotationBuilder value(Annotation... values) {
512515
* @param values the long array, must not be {@code null}
513516
* @return this {@code AnnotationBuilder}
514517
*/
515-
AnnotationBuilder member(String name, long... values);
518+
AnnotationBuilder member(String name, long[] values);
516519

517520
/**
518521
* Adds a float-valued annotation member with given {@code name}.
@@ -530,7 +533,7 @@ default AnnotationBuilder value(Annotation... values) {
530533
* @param values the float array, must not be {@code null}
531534
* @return this {@code AnnotationBuilder}
532535
*/
533-
AnnotationBuilder member(String name, float... values);
536+
AnnotationBuilder member(String name, float[] values);
534537

535538
/**
536539
* Adds a double-valued annotation member with given {@code name}.
@@ -548,7 +551,7 @@ default AnnotationBuilder value(Annotation... values) {
548551
* @param values the double array, must not be {@code null}
549552
* @return this {@code AnnotationBuilder}
550553
*/
551-
AnnotationBuilder member(String name, double... values);
554+
AnnotationBuilder member(String name, double[] values);
552555

553556
/**
554557
* Adds a char-valued annotation member with given {@code name}.
@@ -566,7 +569,7 @@ default AnnotationBuilder value(Annotation... values) {
566569
* @param values the char array, must not be {@code null}
567570
* @return this {@code AnnotationBuilder}
568571
*/
569-
AnnotationBuilder member(String name, char... values);
572+
AnnotationBuilder member(String name, char[] values);
570573

571574
/**
572575
* Adds a String-valued annotation member with given {@code name}.
@@ -584,7 +587,7 @@ default AnnotationBuilder value(Annotation... values) {
584587
* @param values the String array, must not be {@code null} or contain {@code null}
585588
* @return this {@code AnnotationBuilder}
586589
*/
587-
AnnotationBuilder member(String name, String... values);
590+
AnnotationBuilder member(String name, String[] values);
588591

589592
/**
590593
* Adds an enum-valued annotation member with given {@code name}.
@@ -602,7 +605,7 @@ default AnnotationBuilder value(Annotation... values) {
602605
* @param values the enum array, must not be {@code null} or contain {@code null}
603606
* @return this {@code AnnotationBuilder}
604607
*/
605-
AnnotationBuilder member(String name, Enum<?>... values);
608+
AnnotationBuilder member(String name, Enum<?>[] values);
606609

607610
/**
608611
* Adds an enum-valued annotation member with given {@code name}.
@@ -622,7 +625,7 @@ default AnnotationBuilder value(Annotation... values) {
622625
* @param enumValues names of the enum constants, must not be {@code null} or contain {@code null}
623626
* @return this {@code AnnotationBuilder}
624627
*/
625-
AnnotationBuilder member(String name, Class<? extends Enum<?>> enumType, String... enumValues);
628+
AnnotationBuilder member(String name, Class<? extends Enum<?>> enumType, String[] enumValues);
626629

627630
/**
628631
* Adds an enum-valued annotation member with given {@code name}.
@@ -642,7 +645,7 @@ default AnnotationBuilder value(Annotation... values) {
642645
* @param enumValues names of the enum constants, must not be {@code null} or contain {@code null}
643646
* @return this {@code AnnotationBuilder}
644647
*/
645-
AnnotationBuilder member(String name, ClassInfo enumType, String... enumValues);
648+
AnnotationBuilder member(String name, ClassInfo enumType, String[] enumValues);
646649

647650
/**
648651
* Adds a class-valued annotation member with given {@code name}.
@@ -660,7 +663,7 @@ default AnnotationBuilder value(Annotation... values) {
660663
* @param values the class array, must not be {@code null} or contain {@code null}
661664
* @return this {@code AnnotationBuilder}
662665
*/
663-
AnnotationBuilder member(String name, Class<?>... values);
666+
AnnotationBuilder member(String name, Class<?>[] values);
664667

665668
/**
666669
* Adds a class-valued annotation member with given {@code name}.
@@ -678,7 +681,7 @@ default AnnotationBuilder value(Annotation... values) {
678681
* @param values the class array, must not be {@code null} or contain {@code null}
679682
* @return this {@code AnnotationBuilder}
680683
*/
681-
AnnotationBuilder member(String name, ClassInfo... values);
684+
AnnotationBuilder member(String name, ClassInfo[] values);
682685

683686
/**
684687
* Adds a class-valued annotation member with given {@code name}.
@@ -717,7 +720,7 @@ default AnnotationBuilder value(Annotation... values) {
717720
* @return this {@code AnnotationBuilder}
718721
* @throws IllegalArgumentException if any given type is invalid, as described above
719722
*/
720-
AnnotationBuilder member(String name, Type... values);
723+
AnnotationBuilder member(String name, Type[] values);
721724

722725
/**
723726
* Adds an annotation-valued annotation member with given {@code name}.
@@ -735,7 +738,7 @@ default AnnotationBuilder value(Annotation... values) {
735738
* @param values the annotation array, must not be {@code null} or contain {@code null}
736739
* @return this {@code AnnotationBuilder}
737740
*/
738-
AnnotationBuilder member(String name, AnnotationInfo... values);
741+
AnnotationBuilder member(String name, AnnotationInfo[] values);
739742

740743
/**
741744
* Adds an annotation-valued annotation member with given {@code name}.
@@ -753,13 +756,14 @@ default AnnotationBuilder value(Annotation... values) {
753756
* @param values the annotation array, must not be {@code null} or contain {@code null}
754757
* @return this {@code AnnotationBuilder}
755758
*/
756-
AnnotationBuilder member(String name, Annotation... values);
759+
AnnotationBuilder member(String name, Annotation[] values);
757760

758761
/**
759762
* Returns an {@link AnnotationInfo} that includes all annotation members defined by previous method calls
760763
* on this builder. After {@code build()} is called, this builder instance should be discarded.
761764
*
762765
* @return the built {@link AnnotationInfo}, never {@code null}
766+
* @throws IllegalStateException if a value of some annotation member wasn't set
763767
*/
764768
AnnotationInfo build();
765769
}

0 commit comments

Comments
 (0)