I have just commited my XML extensions to  https://svn.jboss.org/repos/seam/modules/xml/trunk/ and I would like a bit of feedback on some of the changes I have made and would like make to the syntax specified in the original web beans spec. Details are below:
 
Syntax for producer beans (implemented)
 
The original spec used this syntax:
 
<ns:Bean>
  <ns:field>
    <Producer>
      <ns:SomeQualifier/>
    </Producer>
  </ns:field>
</ns:Bean>
 
I have changed this to:
 
<ns:Bean>
  <ns:field>
    <Producer/>
    <ns:SomeQualifier/>
  </ns:field>
</ns:Bean>
 
Setting initial field values (implemented):
 
You can now do:
 
<ns:Bean>
  <ns:field>
    <Producer/>
     <value>10</value>
  </ns:field>
 <ns:field2>5</ns:field2>
  <ns:mapField>
     <entry><key>a</key><value>b</value></entry>
     <e><k>c</k><v>d</v></e>
  </ns:mapField/>
</ns:Bean>
 
The value key and entry tags can be shorted to just <v><k> and <e> tags,  not sure if this is a good idea or not. I would also like to add the ability to set field values using EL.
 
Vetoing beans using XML (implemented)
 
Syntax is:
 
<veto>
  <ns:Bean1/>
  <ns:Bean2/>
</veto>
 
Replacing and extending Beans (not implemented)
 
I would like to add <override> and <extends> tags that can be added as a direct child of a Bean element. The override tag will have the same effect as the veto tag above, i.e. preventing the default bean from being installed. The <extends> tag specifies that the annotation and configuration is added to the existing Bean definition instead of installing a new bean.
 
 
Change of syntax for constructor and method parameters (not implemented)
 
Currently method parameters are specified as direct children of the method like so:
 
 
<ns:Bean>
  <ns:method>
    <Producer/>
     <ns:ParamType1><ns:SomeAnntation/></ns:ParamType1>
     <ns:SomeOtherAnnotation/>
     <ns:ParamType2/>
  </ns:method>
</ns:Bean>
 
I think this is a bit confusing, as parameters and annotations can be interspeced at random and it is not immeditatly obvious which is which. I think it should be changed to:
 
<ns:Bean>
  <ns:method>
    <Producer/>
     <ns:SomeOtherAnnotation/>
     <parameters>
        <ns:ParamType1><ns:SomeAnntation/></ns:ParamType1>
        <ns:ParamType2/>
     </parameters/>
  </ns:method>
</ns:Bean>
 
Something similar should probably be done for the constructor parameters as well.
 
Factories for primitive types (not implemented)
 
<factory>
  <String/>
  <ns:SomeQualifier/>
  <value>hello world</value>
</factory>
 
This would allow you to the inject a string with the qualifier @SomeQualifier.
 
Thoughts?
 
Stuart