-
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.