java - CDI Extension - How to handle nonbinding values on qualifier -


i working on cdi extension. have register special custom beans, thats why producer not sufficient.

this done inside afterbeandiscovery-phase registering custom implementation of bean<> using abd.addbean() method.

the drawback inside create()-method of bean can't access injectionpoint, may contain additional configuration inside annotation.

as possibility collect beans need in processinjectiontarget phase (as there have access annotations) , register each of them inside afterbeandiscovery phase. have make configuration annotation qualifier , attributes of qualifier binding (not using @nonbinding) prevent ambigous dependencies.

but register huge amount of beans different in configuration.

is there alternate solution? possible access injectionpoint inside beans create() method?

thank you!

i think found solution.

basically somehow needed access current injectionpoint inside beans create() method, way 1 can access annotations of injection point.

to injection point following code snipped works (inspired omnifaces, using apache deltaspike):

public class injectionpointgenerator {    @inject   private injectionpoint injectionpoint;    public injectionpoint getinjectionpoint() {     return injectionpoint;   } }   public class beanutils {    protected beanutils() {     // prevent instantiation   }    public static injectionpoint getinjectionpoint(@nonnull creationalcontext context) {     bean<injectionpointgenerator> bean = getbean(injectionpointgenerator.class);     beanmanager beanmanager = beanmanagerprovider.getinstance().getbeanmanager();     injectionpoint injectionpoint = bean.getinjectionpoints().iterator().next();     return (injectionpoint) beanmanager.getinjectablereference(injectionpoint, context);   }    private static <t> bean<t> getbean(@nonnull class<t> type) {     return beanprovider.getbeandefinitions(type, false, true).iterator().next();   } } 

Comments

Popular posts from this blog

How has firefox/gecko HTML+CSS rendering changed in version 38? -

android - CollapsingToolbarLayout: position the ExpandedText programmatically -

Listeners to visualise results of load test in JMeter -