-
Clarification
-
Resolution: Done
-
Major
-
2.0 .Final
-
None
-
None
If you take this code:
@Produces
public List<Object> produceList(InterceptionFactory<List<Object>> interceptionFactory) {
interceptionFactory.ignoreFinalMethods().configure().filterMethods((m) -> {
if (m.getJavaMember().getName().equals("add")
&& m.getJavaMember().getParameterCount() == 1) {
return true;
}
return false;
}).findFirst().get().add(Monitor.Literal.INSTANCE);
return interceptionFactory.createInterceptedInstance(new ArrayList<>());
}
Parameterized type for injected InterceptionFactory is an interface List<Object>, so when calling configure(), user will work with an AnnotatedTypeConfigurator<List<Object>> to apply interceptor binding.
In a standard interceptor usage, interceptor binding on interface are ignored (even if they have @Inherited annotation), so doing it with InterceptionFactory could be confusing for some user.