<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&nbsp;&nbsp;<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>&nbsp;and
 I would like a bit of feedback on some of the changes I have made and would like make&nbsp;to the syntax specified in the original web beans spec. Details are below:</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font>&nbsp;</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>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font size="2" face="tahoma">&lt;ns:Bean&gt;</font></div>
<div dir="ltr">&nbsp; &lt;ns:field&gt; </div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp; &lt;Producer&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ns:SomeQualifier/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp; &lt;/Producer&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;/ns:field&gt;</font></div>
<div dir="ltr"><font face="times new roman">&lt;/ns:Bean&gt;</font></div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font face="times new roman">
<div dir="ltr"><font size="2" face="tahoma">&lt;ns:Bean&gt;</font></div>
<div dir="ltr">&nbsp; &lt;ns:field&gt; </div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp; &lt;Producer/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp;&lt;ns:SomeQualifier/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;/ns:field&gt;</font></div>
<div dir="ltr"><font face="times new roman">&lt;/ns:Bean&gt;</font></div>
</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font size="2" face="tahoma">You can now do:</font></div>
<div dir="ltr"><font size="2" face="tahoma"></font>&nbsp;</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">&lt;ns:Bean&gt;</font></div>
<div dir="ltr">&nbsp; &lt;ns:field&gt; </div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp; &lt;Producer/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;value&gt;10&lt;/value&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;/ns:field&gt;</font></div>
<div dir="ltr">&nbsp;&lt;ns:field2&gt;<font face="times new roman">5</font><font face="times new roman">&lt;/ns:field2&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;ns:mapField&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry&gt;&lt;key&gt;a&lt;/key&gt;&lt;value&gt;b&lt;/value&gt;&lt;/entry&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp; &lt;e&gt;&lt;k&gt;c&lt;/k&gt;&lt;v&gt;d&lt;/v&gt;&lt;/e&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;/ns:mapField/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&lt;/ns:Bean&gt;</font></div>
</font></div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</div>
<div dir="ltr"><font face="times new roman">The value key and entry tags can be shorted to just &lt;v&gt;&lt;k&gt; and &lt;e&gt; tags,&nbsp; 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>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font face="times new roman">Syntax is:</font></div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</div>
<div dir="ltr"><font face="times new roman">&lt;veto&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;ns:Bean1/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;ns:Bean2/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&lt;/veto&gt;</font></div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font face="times new roman">I would like to add &lt;override&gt; and &lt;extends&gt; 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&nbsp;from being&nbsp;installed.
 The &lt;extends&gt; 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>&nbsp;</div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</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>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font face="times new roman"><font face="Tahoma">&nbsp;</font>
<div dir="ltr"><font size="2" face="Tahoma">&lt;ns:Bean&gt;</font></div>
<div dir="ltr">&nbsp; &lt;ns:method&gt; </div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp; &lt;Producer/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ns:ParamType1&gt;&lt;ns:SomeAnntation/&gt;&lt;/ns:ParamType1&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp; &lt;ns:SomeOtherAnnotation/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp; &lt;ns:ParamType2/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;/ns:method&gt;</font></div>
<div dir="ltr"><font face="times new roman"></font></div>
<div dir="ltr"><font face="times new roman">&lt;/ns:Bean&gt;</font></div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font face="times new roman">
<div dir="ltr"><font size="2" face="Tahoma">&lt;ns:Bean&gt;</font></div>
<div dir="ltr">&nbsp; &lt;ns:method&gt; </div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp; &lt;Producer/&gt;</font></div>
<div dir="ltr">&nbsp;&nbsp;&nbsp;&nbsp; &lt;ns:SomeOtherAnnotation/&gt;</div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameters&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ns:ParamType1&gt;&lt;ns:SomeAnntation/&gt;&lt;/ns:ParamType1&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ns:ParamType2/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameters/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;/ns:method&gt;</font></div>
<div dir="ltr"><font face="times new roman"></font></div>
<div dir="ltr"><font face="times new roman">&lt;/ns:Bean&gt;</font></div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</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>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font face="times new roman">&lt;factory&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;String/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;ns:SomeQualifier/&gt;</font></div>
<div dir="ltr"><font face="times new roman">&nbsp; &lt;value&gt;hello world&lt;/value&gt;</font></div>
<div dir="ltr"><font face="times new roman">&lt;/factory&gt;</font></div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</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>&nbsp;</div>
<div dir="ltr"><font face="times new roman">Thoughts?</font></div>
<div dir="ltr"><font face="times new roman"></font>&nbsp;</div>
<div dir="ltr"><font face="times new roman">Stuart</font></div>
</font></div>
</font></div>
</font></div>
</body>
</html>