[seam-dev] Identifying which jars contains seam/cdi extensions and programmatic extensions ?

Pete Muir pmuir at redhat.com
Fri Apr 8 04:25:12 EDT 2011


On 7 Apr 2011, at 13:48, Max Rydahl Andersen wrote:

> 
>>>>> 1) finding which jar's to scan (haven't checked this but using the service declaration in META-INF might be enough)
>>>> 
>>>> I think it should
>>>> 
>>>>> 2) when scanning the jar knowing which classes in the jar's that looks like compliant CDI beans really aren't beans.
>>>> 
>>>> I think this is simple. If it has beans.xml, as normal. If it doesn't look for Solder annotations and register those beans...
>>> 
>>> that sounds like a plan.
>>> 
>>> and just to be sure - you mean beans.xml as normal + scan solder annotations and if no beans.ml and just service declaration in manifest.mf only scan solder annotations ?
>> 
>> Yes. For now just solder, but if any other such libs come up consider adding those?
> 
> Not unless there is a need.

:-D

> 
>> For JBoss stuff, it will be Solder though. This will mean that people have the option of using CDI annotations OR Solder annotations to define their beans, which I think should mean that 90% of extensions can be done declaratively if authors try hard (this is a good incentive to do just that). We will need to consider a design-beans.xml or something for the remaining beans I think - perhaps for now based on seam config?
> 
> That's what we discussed yes - but would be good to have some example definition of these we could use/explore.

Over to Shane &co ;-)

> 
>> Anyway, that can't go in the spec until there is an xml dialect there...
> 
> yes - thus focusing on Solder annotations and eventually seamconfg xml support sounds like the best plan to me.
> 
>>> and this will also mean that if an archive actually contains "normal" CDI beans they would not be picked up. Correct?
>> 
>> An archive without beans.xml?
> 
> yes, one that only has the manifest-mf service to say "enable Solder scanning"

I think the deal would be you would only scan bean archives (those with beans.xml) and ignore those without. Solder annotations will only be picked up if it's a bean archive or the archive author explicitly asks the class to be scanned programmatically (which we are discussing you guys won't support for tooling, in this case a design-beans.xml will be required).

> 
> 
>>>>>> I really don't think that forcing some xml file on extension developers is very clever - either they would have to use this as the canonical source of info in which case we're back to programming in XML and it doesn't look good when people ask for examples of using CDI extensions, or we have to keep this stuff in sync.
>>>>> 
>>>>> Since the annotations aren't descriptive enough we'll need to come up with something ;)
>>>> 
>>>> I think we need to revisit why the annotations aren't descriptive enough...
>>> 
>>> Last time it was that the beans simply didn't have annotations or any metadata when registered programmatically.
>> 
>> Right, as above, I hope Solder + CDI can cover 90% of cases...
> 
> Well, its the darnest 10% that is tricky....i.e. noticing that UserTransaction, PersistenceContext and any other new "thing" will have to be somehow registered as "available". If not, you get annoying warnings.

I think that for this 10% we have to make people write a xml descriptor as well.

> 
> /max
> 
>> 
>>> 
>>> /max
>>> 
>>>> 
>>>>> 
>>>>> /max
>>>>> 
>>>>>> 
>>>>>> On 24 Mar 2011, at 20:56, Max Rydahl Andersen wrote:
>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> Talking with Seam/CDI tooling team at EclipseCon and we are still in the dark on how tooling are supposed to identify CDI extensions that are registered programmatically and often does not have a beans.xml to "mark" them.
>>>>>>> 
>>>>>>> Today we do it by simply scanning jars with *weld*.jar naming pattern (very brittle and not good for 3rd party extensions).
>>>>>>> 
>>>>>>> Furthermore we also have a list of classes to include/exclude since some components in these jars aren't CDI compliant.
>>>>>>> 
>>>>>>> How do we go about identifying these things ?
>>>>>>> 
>>>>>>> The idea discussed with Dan/Pete on this topic previously were to add a design-beans.xml
>>>>>>> and use that as a marker + list the classes we should load/configure as possible injection/navigation candidates in the tooling.
>>>>>>> 
>>>>>>> I was hoping this were settled before Seam 3 GA but it seem to fallen through the cracks ?
>>>>>>> 
>>>>>>> Something I missed ? 
>>>>>>> 
>>>>>>> /max
>>>>>>> http://about.me/maxandersen
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> seam-dev mailing list
>>>>>>> seam-dev at lists.jboss.org
>>>>>>> https://lists.jboss.org/mailman/listinfo/seam-dev
>>>>>> 
>>>>> 
>>>>> /max
>>>>> http://about.me/maxandersen
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>> 
>>> /max
>>> http://about.me/maxandersen
>>> 
>>> 
>>> 
>> 
> 
> /max
> http://about.me/maxandersen
> 
> 
> 




More information about the seam-dev mailing list