Re: [weld-dev] potential weld jira

2015-11-19 Thread Emily Jiang
I found this in the spec:


Hi Martin, 
I found this:

In 4.3 Specialization, 
@Alternative @Specializes
public class MockAsynchronousService extends AsynchronousService {
...
}
When an enabled bean, as defined in Section 5.1.2, “Enabled and disabled 
beans”, specializes
a second bean, we can be certain that the second bean is never 
instantiated or called by the
container. 

If the alternative bean is not enabled, it should not specialise/disable 
another bean. Do you agree with me or you still want me to raise a 
question in cdi-dev?


Many thanks,
Emily
===
Emily Jiang
WebSphere Application Server, CDI Development Lead
 
MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
Phone:  +44 (0)1962 816278  Internal: 246278

Email: emiji...@uk.ibm.com 
Lotus Notes: Emily Jiang/UK/IBM@IBMGB




From:   Martin Kouba 
To: Emily Jiang/UK/IBM@IBMGB, 
Cc: Weld 
Date:   19/11/2015 09:11
Subject:Re: [weld-dev] potential weld jira
Sent by:weld-dev-boun...@lists.jboss.org



Dne 19.11.2015 v 10:07 Emily Jiang napsal(a):
> Hi Martin,
>
> The issue is that the specialized bean is not enabled for
> beans-xml-modified2.jar.

Yep, but the spec does not state this should be taken into account.

> @Alternative @Specialized annotated beans should not be active if it is
> not enabled. I think the specialized should not be active if the
> alternative is not. Otherwise, we run into the situation where the
> specialized bean disabled a second bean but itself is not active.
>
> ok. I'll post the question on cdi-dev.
>
> Many thanks,
> Emily
> ===
> Emily Jiang
> WebSphere Application Server, CDI Development Lead
>
> MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
> Phone:  +44 (0)1962 816278  Internal: 246278
>
> Email: emiji...@uk.ibm.com
> Lotus Notes: Emily Jiang/UK/IBM@IBMGB
>
>
>
>
> From: Martin Kouba 
> To: Emily Jiang/UK/IBM@IBMGB,
> Cc: Weld 
> Date: 19/11/2015 07:46
> Subject: Re: [weld-dev] potential weld jira
> Sent by: weld-dev-boun...@lists.jboss.org
> 
>
>
>
> The enablement is per bean archive but specialization is not, see also
> 4.3. Specialization:
>
> "When an enabled bean, as defined in Enabled and disabled beans,
> specializes a second bean, we can be certain that the second bean is
> never instantiated or called by the container. Even if the second bean
> defines a producer or observer method, the method will never be called."
>
> In other words, AlternativeCounterProducerModified (which is enabled in
> beans-xml-modified.jar) specializes CounterProducerModified. And so
> CounterProducerModified is not enabled for beans-xml-modified2.jar
> because it is specialized by any other enabled bean.
>
> Feel free to post a question to the cdi-dev ML.
>
> Martin
>
> Dne 18.11.2015 v 18:14 Emily Jiang napsal(a):
>  > Thank you Martin!
>  >
>  > I interpreted this enablement differently.
>  >
>  > The CDI 1.2 spec states:
>  >
>  > A bean is said to be /enabled/ if:
>  >
>  >   * it is deployed in a bean archive, and
>  >   * it is not a producer method or field of a disabled bean, and
>  >   * it is not specialized by any other enabled bean, as defined in
>  > _Specialization_
>  > ,
>  > and either
>  >   * it is not an alternative, or it is a selected alternative of at
>  > least one bean archive or the application.
>  >
>  > Otherwise, the bean is said to be disabled.
>  >
>  >   In the above app, there are two jars. The jar
>  > beans-xml-modified2.jar.jar  does not enable the alternative and in 
its
>  > injection, it should only see the CounterProducerModified. While in
>  > another jar, the alternative AlternativeCounterProducerModified
>  > completely disabled the CounterProducerModified. Any injection in 
that
>  > jar should only see the specialized bean.
>  >
>  >  From what you explained, the beans.xml in one jar enabled the
>  > alternative bean and affect other jars. From my understanding, the
>  > enablement of alternatives/interceptors are specific for that archive
>  > and should not affect other jars.
>  >
>  > Also OpenWebBeans behaves differently from Weld, and OpenWebBeans 
does
>  > what I have expected (enablement are per jar only).
>  >
>  > Many thanks,
>  > Emily
>  > ===
>  > Emily Jiang
>  > WebSphere Application Server, CDI Development Lead
>  >
>  > MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
>  > Phone:  +44 (0)1962 816278  Internal: 246278
>  >
>  > Email: emiji...@uk.ibm.com
>  > Lotus Notes: Emily Jiang/UK/IBM@IBMGB
>  >
>  >
>  >
>  >
>  > From: Martin Kouba 
>  > To: Emily Jiang/UK/IBM@IBMGB,
>  > Cc: Weld 
>  > Date: 18/11/2015 15:52
>  > Subject: Re: potential weld jira
>  >
>  

Re: [weld-dev] potential weld jira

2015-11-19 Thread Emily Jiang
Hi Martin,

The issue is that the specialized bean is not enabled for 
beans-xml-modified2.jar. 
@Alternative @Specialized annotated beans should not be active if it is 
not enabled. I think the specialized should not be active if the 
alternative is not. Otherwise, we run into the situation where the 
specialized bean disabled a second bean but itself is not active. 

ok. I'll post the question on cdi-dev.

Many thanks,
Emily
===
Emily Jiang
WebSphere Application Server, CDI Development Lead
 
MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
Phone:  +44 (0)1962 816278  Internal: 246278

Email: emiji...@uk.ibm.com 
Lotus Notes: Emily Jiang/UK/IBM@IBMGB




From:   Martin Kouba 
To: Emily Jiang/UK/IBM@IBMGB, 
Cc: Weld 
Date:   19/11/2015 07:46
Subject:Re: [weld-dev] potential weld jira
Sent by:weld-dev-boun...@lists.jboss.org



The enablement is per bean archive but specialization is not, see also 
4.3. Specialization:

"When an enabled bean, as defined in Enabled and disabled beans, 
specializes a second bean, we can be certain that the second bean is 
never instantiated or called by the container. Even if the second bean 
defines a producer or observer method, the method will never be called."

In other words, AlternativeCounterProducerModified (which is enabled in 
beans-xml-modified.jar) specializes CounterProducerModified. And so 
CounterProducerModified is not enabled for beans-xml-modified2.jar 
because it is specialized by any other enabled bean.

Feel free to post a question to the cdi-dev ML.

Martin

Dne 18.11.2015 v 18:14 Emily Jiang napsal(a):
> Thank you Martin!
>
> I interpreted this enablement differently.
>
> The CDI 1.2 spec states:
>
> A bean is said to be /enabled/ if:
>
>   * it is deployed in a bean archive, and
>   * it is not a producer method or field of a disabled bean, and
>   * it is not specialized by any other enabled bean, as defined in
> _Specialization_
> ,
> and either
>   * it is not an alternative, or it is a selected alternative of at
> least one bean archive or the application.
>
> Otherwise, the bean is said to be disabled.
>
>   In the above app, there are two jars. The jar
> beans-xml-modified2.jar.jar  does not enable the alternative and in its
> injection, it should only see the CounterProducerModified. While in
> another jar, the alternative AlternativeCounterProducerModified
> completely disabled the CounterProducerModified. Any injection in that
> jar should only see the specialized bean.
>
>  From what you explained, the beans.xml in one jar enabled the
> alternative bean and affect other jars. From my understanding, the
> enablement of alternatives/interceptors are specific for that archive
> and should not affect other jars.
>
> Also OpenWebBeans behaves differently from Weld, and OpenWebBeans does
> what I have expected (enablement are per jar only).
>
> Many thanks,
> Emily
> ===
> Emily Jiang
> WebSphere Application Server, CDI Development Lead
>
> MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
> Phone:  +44 (0)1962 816278  Internal: 246278
>
> Email: emiji...@uk.ibm.com
> Lotus Notes: Emily Jiang/UK/IBM@IBMGB
>
>
>
>
> From: Martin Kouba 
> To: Emily Jiang/UK/IBM@IBMGB,
> Cc: Weld 
> Date: 18/11/2015 15:52
> Subject: Re: potential weld jira
>
> 
>
>
>
> Well, it seems the problem is that CounterProducerModified is
> specialized by AlternativeCounterProducerModified and so it's not
> enabled and therefore it's producer method is also disabled (see also
> 5.1.2. Enabled and disabled beans [1]), i.e. it's not available for
> injection in beans-xml-modified2.jar. And
> AlternativeCounterProducerModified is an alternative which is not
> selected for beans-xml-modified2.jar.
>
> It should work if you enable AlternativeCounterProducerModified globally
> or select AlternativeCounterProducerModified for 
beans-xml-modified2.jar.
>
> Martin
>
> [1]
> http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#enablement
>
> Dne 18.11.2015 v 16:14 Emily Jiang napsal(a):
>  > Hi Martin,
>  >
>  > Here's a simplified form of the test case:
>  >
>  >
>  > The application does not start, reporting
>  >
>  > [ERROR   ] CWWKZ0004E: An exception occurred while starting the
>  > application testDiffBDA. The exception message was:
>  > com.ibm.ws.container.service.state.StateChangeException:
>  > org.jboss.weld.exceptions.DeploymentException: WELD-001408: 
Unsatisfied
>  > dependencies for type String with qualifiers 
@CounterModifiedQualifier
>  >at injection point [BackedAnnotatedField] @Inject
>  > @CounterModifiedQualifier
>  >
> 
com.ibm.jcdi.test.beansxml.CounterProducerConsumerModified2.modifiedProducer
>  >at
>  >
> 

Re: [weld-dev] potential weld jira

2015-11-19 Thread Martin Kouba
Dne 19.11.2015 v 10:07 Emily Jiang napsal(a):
> Hi Martin,
>
> The issue is that the specialized bean is not enabled for
> beans-xml-modified2.jar.

Yep, but the spec does not state this should be taken into account.

> @Alternative @Specialized annotated beans should not be active if it is
> not enabled. I think the specialized should not be active if the
> alternative is not. Otherwise, we run into the situation where the
> specialized bean disabled a second bean but itself is not active.
>
> ok. I'll post the question on cdi-dev.
>
> Many thanks,
> Emily
> ===
> Emily Jiang
> WebSphere Application Server, CDI Development Lead
>
> MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
> Phone:  +44 (0)1962 816278  Internal: 246278
>
> Email: emiji...@uk.ibm.com
> Lotus Notes: Emily Jiang/UK/IBM@IBMGB
>
>
>
>
> From: Martin Kouba 
> To: Emily Jiang/UK/IBM@IBMGB,
> Cc: Weld 
> Date: 19/11/2015 07:46
> Subject: Re: [weld-dev] potential weld jira
> Sent by: weld-dev-boun...@lists.jboss.org
> 
>
>
>
> The enablement is per bean archive but specialization is not, see also
> 4.3. Specialization:
>
> "When an enabled bean, as defined in Enabled and disabled beans,
> specializes a second bean, we can be certain that the second bean is
> never instantiated or called by the container. Even if the second bean
> defines a producer or observer method, the method will never be called."
>
> In other words, AlternativeCounterProducerModified (which is enabled in
> beans-xml-modified.jar) specializes CounterProducerModified. And so
> CounterProducerModified is not enabled for beans-xml-modified2.jar
> because it is specialized by any other enabled bean.
>
> Feel free to post a question to the cdi-dev ML.
>
> Martin
>
> Dne 18.11.2015 v 18:14 Emily Jiang napsal(a):
>  > Thank you Martin!
>  >
>  > I interpreted this enablement differently.
>  >
>  > The CDI 1.2 spec states:
>  >
>  > A bean is said to be /enabled/ if:
>  >
>  >   * it is deployed in a bean archive, and
>  >   * it is not a producer method or field of a disabled bean, and
>  >   * it is not specialized by any other enabled bean, as defined in
>  > _Specialization_
>  > ,
>  > and either
>  >   * it is not an alternative, or it is a selected alternative of at
>  > least one bean archive or the application.
>  >
>  > Otherwise, the bean is said to be disabled.
>  >
>  >   In the above app, there are two jars. The jar
>  > beans-xml-modified2.jar.jar  does not enable the alternative and in its
>  > injection, it should only see the CounterProducerModified. While in
>  > another jar, the alternative AlternativeCounterProducerModified
>  > completely disabled the CounterProducerModified. Any injection in that
>  > jar should only see the specialized bean.
>  >
>  >  From what you explained, the beans.xml in one jar enabled the
>  > alternative bean and affect other jars. From my understanding, the
>  > enablement of alternatives/interceptors are specific for that archive
>  > and should not affect other jars.
>  >
>  > Also OpenWebBeans behaves differently from Weld, and OpenWebBeans does
>  > what I have expected (enablement are per jar only).
>  >
>  > Many thanks,
>  > Emily
>  > ===
>  > Emily Jiang
>  > WebSphere Application Server, CDI Development Lead
>  >
>  > MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
>  > Phone:  +44 (0)1962 816278  Internal: 246278
>  >
>  > Email: emiji...@uk.ibm.com
>  > Lotus Notes: Emily Jiang/UK/IBM@IBMGB
>  >
>  >
>  >
>  >
>  > From: Martin Kouba 
>  > To: Emily Jiang/UK/IBM@IBMGB,
>  > Cc: Weld 
>  > Date: 18/11/2015 15:52
>  > Subject: Re: potential weld jira
>  >
>  > 
>  >
>  >
>  >
>  > Well, it seems the problem is that CounterProducerModified is
>  > specialized by AlternativeCounterProducerModified and so it's not
>  > enabled and therefore it's producer method is also disabled (see also
>  > 5.1.2. Enabled and disabled beans [1]), i.e. it's not available for
>  > injection in beans-xml-modified2.jar. And
>  > AlternativeCounterProducerModified is an alternative which is not
>  > selected for beans-xml-modified2.jar.
>  >
>  > It should work if you enable AlternativeCounterProducerModified globally
>  > or select AlternativeCounterProducerModified for beans-xml-modified2.jar.
>  >
>  > Martin
>  >
>  > [1]
>  > http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#enablement
>  >
>  > Dne 18.11.2015 v 16:14 Emily Jiang napsal(a):
>  >  > Hi Martin,
>  >  >
>  >  > Here's a simplified form of the test case:
>  >  >
>  >  >
>  >  > The application does not start, reporting
>  >  >
>  >  > [ERROR   ] CWWKZ0004E: An exception occurred while starting the
>