Code review for Transactional ChangeApplier - branch 2881
Antranig Basman
antranig.basman at colorado.edu
Fri Jun 4 06:02:44 UTC 2010
I realised after everyone turned in on Wednesday that this would be a
really good thing to have in advance of the merge :) Colin, I wonder if
you could do the honours and look over particularly
http://source.fluidproject.org/svn/fluid/infusion/branches/FLUID-2881/src/webapp/framework/core/js/DataBinding.js
and
http://source.fluidproject.org/svn/fluid/infusion/branches/FLUID-2881/src/webapp/framework/core/js/Fluid.js
(the corresponding test cases in the usual places) in search of the
peculiar, ineffective or downright offensive :P I remembered now what I
thought would be the most problematic aspect of the merge (and even the
work in general) which was the violence done to the implementation of
the Fluid events system in order to enable this function to be reused in
the new transactional ChangeApplier. The motivation may be a little
unclear, so here it it - the new ChangeApplier in several situations
needs to "assess in advance" the set of listeners which will fire, and
if necessary, amalgamate the listeners which will be upcoming to be
triggered by different paths. This was something that the analogous
system in RSF was never very good about but should here be "solved" -
for example, if there is a listener attached to "*" and during a single
transaction there are changes made to path1, and then to path2, the
listener should fire only ONCE at the end of the transaction ( but be
supplied an amalgamated change list). In order to support this, the
fluid events impl has become a little gnarled - it seemed worthwhile to
try to reuse this since there was the functionality of "namespacing" of
listeners implemented there which seemed a useful and orthogonal
facility to support in the new ChangeApplier (it was actually also
supported in ChangeApplier v1 but I don't believe anyone ever used this).
As a reminder to all, we are considering this functionality for "speedy
merge" into infusion trunk since it seems that it will be highly useful
for CollectionSpace and allow the removal of a good collection of code
across the app as well as in the DataContext. Comments and reviews
welcomed from all,
Cheers,
Antranig.
More information about the fluid-work
mailing list