我在便携式CDI扩展中使用以下代码,为观察者方法声明添加“默认”限定符。
void processObserverMethod(@Observes ProcessObserverMethod<? extends ConfigurableEvent<?>, ?> observerMethod) {
Set<Annotation> qualifiers = observerMethod.getObserverMethod().getObservedQualifiers();
if (!qualifiers.contains(new AnnotationLiteral<Special>() {})) {
qualifiers.add(new AnnotationLiteral<Normal>() {});
}
目标是,有两个互斥的限定符Normal
和Special
,以避免在每个观察者声明中声明Normal
。
代码适用于Weld 1.1但不适用于2.0。我打开了一个bug但是Weld的家伙告诉我CDI规格不支持。
有没有人知道另一种获得相同结果的方法?