[cdi-dev] exclude rules questions

Martin Kouba mkouba at redhat.com
Mon Feb 3 05:45:24 EST 2014


Dne 3.2.2014 11:11, Mark Struberg napsal(a):
> 
> 
> 
> ad 1.)
> 
> Well, I do not entirely agree with the foobar also being excluded. The spec says:
> 
> "<exclude name="com.acme.ejb.**">"
> 
> "The fourth exclude filter will exclude all classes in the com.acme.ejb package, and any subpackages if the system property exclude-ejbs is set (with any value)."
> 
> Clearly com.acme.ejbrother is neither com.acme.ejb nor a sub-package.
> From a user view I'd say it makes no sense to also exclude ejbrother.
> 

Yes. But it's only an example description which indicates it was not
intended.

IMO the authoritative statement is:
"the package name of the type being discovered starts with the value of
the name attribute with a suffix ".**" of the exclude filter"

> 
> ad 2.)
> 
> We must clarify whether multiple conditions in a <scan> element are OR or AND.

I think it's OR because the spec states:
"If the exclude filter definition contains:
* ...condition, OR
then the filter is inactive."

> 
> LieGrue,
> strub
> 
> 
> 
> 
>> On Monday, 3 February 2014, 10:49, Martin Kouba <mkouba at redhat.com> wrote:
>>> Hi Mark,
>>
>> Dne 31.1.2014 21:07, Mark Struberg napsal(a):
>>>
>>>
>>>   Hi!
>>>
>>>   A few questions regarding exclude rules
>>>
>>>   1.) does .* mean only the package, but no sub-packages. Whereas .** also 
>> includes sub-packages?
>>>   Marek brought up another interesting note: com.foo.** would according to 
>> the wording also exclude com.foobar... Is that intended?
>>>
>>
>> Yes, types from "com.foobar" would be excluded as well. I'm not 
>> sure it
>> was intended but we should not change the behaviour due to backwards
>> compatibility...
>>
>>>
>>>   2.) Are multiple children allowed in an exclude rule in beans.xml?
>>
>> Yep, check also the schema file (beans_1_1.xsd).
>>
>>>   There is a funny example in the spec:
>>>
>>>   <exclude name="com.acme.ejb.**"> 
>>>
>>>    <if-class-available 
>> name="javax.enterprise.inject.Model"/> 
>>>
>>>    <if-system-property name="exclude-ejbs"/> 
>>>   </exclude> 
>>>
>>>
>>>   But I could not find the explanation what should happen. The 
>> if-class-available is nowhere stated. Or did I overlook it?
>>>
>>
>> "if-class-available" is described above the example and in xsd. The
>> filter is active only if the classloader for the bean archive CAN
>> load a class for that name. So the filter will not be active if the
>> "Model" class can't be loaded or if the system property 
>> "exclude-ejbs"
>> is not set.
>>
>> In any case the description of the example is not complete and we should
>> add a TCK test for this as well (AFAIK
>> org.jboss.cdi.tck.tests.deployment.exclude.ExcludeFiltersTest is not
>> testing multiple child elements).
>>
>>
>>>   txs and LieGrue,
>>>   strub
>>>
>>>
>>>   _______________________________________________
>>>   cdi-dev mailing list
>>>   cdi-dev at lists.jboss.org
>>>   https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>
>>



More information about the cdi-dev mailing list