Hi Deven, More a CDI user question than a Deltaspike ;)
You need to provide an instance of your qualifier. As java doesn’t provide a
way to create such an instance easily, CDI provides an AnnotationLiteral class
to do so. As your qualifier doesn’t contain member you can create an anonymous
class to do so :
beanMgr.fireEvent(this.config, new AnnotationLiteral<AppConfig>(){});
Antoine
> Le 12 janv. 2015 à 14:45, Deven Phillips <[email protected]> a écrit :
>
> Next question... I have created a qualifier:
>
> import static java.lang.annotation.RetentionPolicy.*;
> import static java.lang.annotation.ElementType.*;
>
> import java.lang.annotation.Retention;
> import java.lang.annotation.Target;
> import javax.inject.Qualifier;
>
> /**
> * An annotation to allow for differentiation between
> * differing instances of the Configuration bean
> */
> @Qualifier
> @Retention(RUNTIME)
> @Target({METHOD, FIELD, PARAMETER, TYPE})
> public @interface AppConfig {
> }
>
> And I want to use it with a fireEvent() call... Is there a good reference
> of how to accomplish that?
>
> What I was thinking might work, but which does not:
>
> beanMgr.fireEvent(this.config, AppConfig);
>
> Thanks in advance!!
>
> Deven
>
> On Sun, Jan 11, 2015 at 1:46 AM, Deven Phillips <[email protected]>
> wrote:
>
>> NVM! I figured out my problem... I forgot to add an empty "beans.xml" file
>> to the META-INF directory!!!
>>
>> Doh!
>>
>> Deven
>>
>> On Sun, Jan 11, 2015 at 1:30 AM, Deven Phillips <[email protected]>
>> wrote:
>>
>>> I have created a simple example to demonstrate the problem I am having:
>>>
>>> https://github.com/InfoSec812/deltaspike-observer-example
>>>
>>> Just clone the repo, and run:
>>>
>>> mvn exec:java -Dexec:args="this can be anything"
>>>
>>> You will see some log output which shows that the "fireEvent" method was
>>> called, but the event is never received.
>>>
>>> I hope that someone can help, as this is holding up my project.
>>>
>>> Thanks in advance!!
>>>
>>> Deven
>>>
>>> On Sun, Jan 11, 2015 at 12:21 AM, Deven Phillips <
>>> [email protected]> wrote:
>>>
>>>> I'm trying to implement a suggestion from John Ament based this gist:
>>>>
>>>> https://gist.github.com/johnament/442e0aa78b7557535545
>>>>
>>>> My code looks something like:
>>>>
>>>> // Initialize DeltaSpike Dependency Injection of JavaSE
>>>> // This will also cause some back-end setup to begin
>>>> LOG.debug("Starting CDI Container and Contexts");
>>>> CdiContainer cdiContainer =
>>>> CdiContainerLoader.getCdiContainer();
>>>> cdiContainer.boot();
>>>> ContextControl ctxControl = cdiContainer.getContextControl();
>>>> ctxControl.startContexts();
>>>>
>>>> // Create an ObjectFactory for the JaxRsApplication to be
>>>> able
>>>> // to inject dependencies
>>>> CdiObjectFactory objFactory = new CdiObjectFactory();
>>>>
>>>> // Send an event to DeltaSpike to load the config into
>>>> // the application scope
>>>> LOG.debug("Firing event to load configuration into
>>>> Application scope");
>>>> try {
>>>> BeanManager bm =
>>>> objFactory.getInstance(BeanManager.class);
>>>> bm.fireEvent(config);
>>>> } catch (InstantiateException ex) {
>>>> LOG.error("Error getting BeanManager from objFactory",
>>>> ex);
>>>> throw new RuntimeException(ex);
>>>> }
>>>>
>>>> The problem is, the observer bean never sees the event. I can trace and
>>>> step through and it never receives the event... Any thoughts on what I may
>>>> be doing wrong?
>>>>
>>>> Thanks in advance!!
>>>>
>>>> Deven
>>>>
>>>
>>>
>>
signature.asc
Description: Message signed with OpenPGP using GPGMail
