[
https://issues.jboss.org/browse/CDI-686?page=com.atlassian.jira.plugin.sy...
]
Romain Manni-Bucau commented on CDI-686:
----------------------------------------
[~xdury] yes, the "final" limitation will only be bypassed if you add it in the
list of proxyable final classes (in openwebbeans.properties), this will proxy the class in
an unsafe mode (ignoring the associated limitations). This is not something recommanded
but the first part (proxying interfaces) is supported and there is no real reason to not
do it.
Could InterceptionFactory accept an interface as type parameter
---------------------------------------------------------------
Key: CDI-686
URL:
https://issues.jboss.org/browse/CDI-686
Project: CDI Specification Issues
Issue Type: Clarification
Affects Versions: 2.0 .Final
Reporter: Antoine Sabot-Durand
Assignee: Antoine Sabot-Durand
Fix For: 2.0 .Final
If you take this code:
{code:java}
@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<>());
}
{code}
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.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)