<html dir="ltr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style title="owaParaStyle"><!--P {
MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
--></style>
</head>
<body ocsi="x">
<div dir="ltr"><font color="#000000" size="2" face="Tahoma">I have just commited my XML extensions to <a href="https://svn.jboss.org/repos/seam/modules/xml/trunk/" target="_blank"><font size="3">https://svn.jboss.org/repos/seam/modules/xml/trunk/</font></a> 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:</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">Syntax for producer beans (implemented)</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">The original spec used this syntax:</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma"><ns:Bean></font></div>
<div dir="ltr"> <ns:field> </div>
<div dir="ltr"><font face="times new roman"> <Producer></font></div>
<div dir="ltr"><font face="times new roman"> <ns:SomeQualifier/></font></div>
<div dir="ltr"><font face="times new roman"> </Producer></font></div>
<div dir="ltr"><font face="times new roman"> </ns:field></font></div>
<div dir="ltr"><font face="times new roman"></ns:Bean></font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">I have changed this to:</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">
<div dir="ltr"><font size="2" face="tahoma"><ns:Bean></font></div>
<div dir="ltr"> <ns:field> </div>
<div dir="ltr"><font face="times new roman"> <Producer/></font></div>
<div dir="ltr"><font face="times new roman"> <ns:SomeQualifier/></font></div>
<div dir="ltr"><font face="times new roman"> </ns:field></font></div>
<div dir="ltr"><font face="times new roman"></ns:Bean></font></div>
</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">Setting initial field values (implemented):</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">You can now do:</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font> </div>
<div dir="ltr"><font size="2" face="tahoma">
<div dir="ltr"><font size="2" face="tahoma">
<div dir="ltr"><font size="2" face="tahoma"><ns:Bean></font></div>
<div dir="ltr"> <ns:field> </div>
<div dir="ltr"><font face="times new roman"> <Producer/></font></div>
<div dir="ltr"><font face="times new roman"> <value>10</value></font></div>
<div dir="ltr"><font face="times new roman"> </ns:field></font></div>
<div dir="ltr"> <ns:field2><font face="times new roman">5</font><font face="times new roman"></ns:field2></font></div>
<div dir="ltr"><font face="times new roman"> <ns:mapField></font></div>
<div dir="ltr"><font face="times new roman"> <entry><key>a</key><value>b</value></entry></font></div>
<div dir="ltr"><font face="times new roman"> <e><k>c</k><v>d</v></e></font></div>
<div dir="ltr"><font face="times new roman"> </ns:mapField/></font></div>
<div dir="ltr"><font face="times new roman"></ns:Bean></font></div>
</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">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.</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Vetoing beans using XML (implemented)</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Syntax is:</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman"><veto></font></div>
<div dir="ltr"><font face="times new roman"> <ns:Bean1/></font></div>
<div dir="ltr"><font face="times new roman"> <ns:Bean2/></font></div>
<div dir="ltr"><font face="times new roman"></veto></font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Replacing and extending Beans (not implemented)</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">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.</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Change of syntax for constructor and method parameters (not implemented)</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Currently method parameters are specified as direct children of the method like so:</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman"><font face="Tahoma"> </font>
<div dir="ltr"><font size="2" face="Tahoma"><ns:Bean></font></div>
<div dir="ltr"> <ns:method> </div>
<div dir="ltr"><font face="times new roman"> <Producer/></font></div>
<div dir="ltr"><font face="times new roman"> <ns:ParamType1><ns:SomeAnntation/></ns:ParamType1></font></div>
<div dir="ltr"><font face="times new roman"> <ns:SomeOtherAnnotation/></font></div>
<div dir="ltr"><font face="times new roman"> <ns:ParamType2/></font></div>
<div dir="ltr"><font face="times new roman"> </ns:method></font></div>
<div dir="ltr"><font face="times new roman"></font></div>
<div dir="ltr"><font face="times new roman"></ns:Bean></font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">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:</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">
<div dir="ltr"><font size="2" face="Tahoma"><ns:Bean></font></div>
<div dir="ltr"> <ns:method> </div>
<div dir="ltr"><font face="times new roman"> <Producer/></font></div>
<div dir="ltr"> <ns:SomeOtherAnnotation/></div>
<div dir="ltr"><font face="times new roman"> <parameters></font></div>
<div dir="ltr"><font face="times new roman"> <ns:ParamType1><ns:SomeAnntation/></ns:ParamType1></font></div>
<div dir="ltr"><font face="times new roman"> <ns:ParamType2/></font></div>
<div dir="ltr"><font face="times new roman"> </parameters/></font></div>
<div dir="ltr"><font face="times new roman"> </ns:method></font></div>
<div dir="ltr"><font face="times new roman"></font></div>
<div dir="ltr"><font face="times new roman"></ns:Bean></font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Something similar should probably be done for the constructor parameters as well.</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Factories for primitive types (not implemented)</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman"><factory></font></div>
<div dir="ltr"><font face="times new roman"> <String/></font></div>
<div dir="ltr"><font face="times new roman"> <ns:SomeQualifier/></font></div>
<div dir="ltr"><font face="times new roman"> <value>hello world</value></font></div>
<div dir="ltr"><font face="times new roman"></factory></font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">This would allow you to the inject a string with the qualifier @SomeQualifier.</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Thoughts?</font></div>
<div dir="ltr"><font face="times new roman"></font> </div>
<div dir="ltr"><font face="times new roman">Stuart</font></div>
</font></div>
</font></div>
</font></div>
</body>
</html>