Hi guys! I'd like to know what you think about
this matter, which has
been raised on
http://jira.xwiki.org/jira/browse/XWIKI-3375.
As I posted there, this is what I think:
-the parameters for the two macros are completely different, so i see no
point for having the box specific parameters (cssClass, title, image,
width and blockTitle) among the rss macro's ones, this will lead to
confusion for the user. The box parameters are deduced from the rss
feed's properties and then passed to the box macro. No need for them to
be exposed in the Rss Macro. Therefore, extending the RssMacroParameters
from the BoxMacroParameters is unreliable.
-extending the RssMacro from the AbstractBoxMacro<RssMacroParameters>
doesn't mean simply implementing AbstractBoxMacro.parseContent instead
of Macro.execute. Currently, most of the code about the box around the
css macro is placed in the box macro's implementation, which is
DefaultBoxMacro, so we do make use of the existing implementations.
Giving up using the box macro internally means giving up using most of
the features already presented in the box macro and rewriting them
-and finally, the most time costing disadvantage is that extending the
rss macro from the box basically means rewriting this macro from
scratch, because it involves redesigning it, task that will cost us time.
So, therefore, I'm -1 for this.
Inheritance implies an "is-a" relationship. So, the important question
is: is a RSS display a Box? Will a RSS display always be a box?
IMHO, no. The fact that currently the RSS macro uses a box is a
presentation detail that might change in the future. Hierarchies are
harder to change, compositions are easier.
+1 for composition (RSS not extending Box, but using one internally, as
it is done now).
--
Sergiu Dumitriu