[cdi-dev] [JBoss JIRA] (CDI-469) Allow nonbinding producer methods to have scopes

John Ament (JIRA) issues at jboss.org
Mon Sep 15 08:00:16 EDT 2014


    [ https://issues.jboss.org/browse/CDI-469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13002322#comment-13002322 ] 

John Ament commented on CDI-469:
--------------------------------

Sure, suppose I have this qualifier:

{code:java}
@Qualifier
...
public @interface Converter {
   @Nonbind String value();
}
{code}

I can define a producer field like so:

{code:java}
@Produces
@ApplicationScoped
@Converter("fooAtoB")
private Function<A,B> aToBConv = new AToBFunction();
{code}

If however these were lazily instantiated, or I had a map or looked up values via DB call, I need to add a producer method.  In this case, I want it to be generic and reusable, however the instances that it returns should be proxied, scope aware (e.g. not unique for each invocation, as is the current behaviour).

{code:java}
@Produces
@Converter
// @ApplicationScoped <-- scope is not valid here
public Function<?,?> createOrFindFunction(InjectionPoint ip) {
// work to look up the function
}
{code}

Scope isnt' valid here as the injection point could be different.  What I'm proposing is that we lift this restriction, in cases where the qualifiers are the same.

> Allow nonbinding producer methods to have scopes
> ------------------------------------------------
>
>                 Key: CDI-469
>                 URL: https://issues.jboss.org/browse/CDI-469
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Beans, Contexts
>    Affects Versions: 1.2.Final
>            Reporter: John Ament
>
> Currently, you cannot have a nonbinding producer method, e.g. one where the annotation is read at runtime, with a scope.  This means that repeated injections always happen.  It would be better if you could scope the nonbinding producer methods, so that the results were bound, e.g. to a request scope, so that look ups can be done once.
> The current way to avoid this is to use a holder object with the proper scope.



--
This message was sent by Atlassian JIRA
(v6.3.1#6329)


More information about the cdi-dev mailing list