> On Sat, Aug 6, 2011 at 9:32 PM, RICHARD Didier <didier.rich...@ign.fr> > wrote: >> >>> >>>>>>> 2/ in test 4, if you remove the initialize function from B and >>>>>>> overload >>>>>>> A, >>>>>>> the B constructor is still the previous A's constructor. >>>>>> >>>>>> Yes. To address this one I see no other solution than patching >>>>>> OpenLayers.Class. See the patch attached to this email, and my >>>>>> test_overload_5 test function. The Class.html tests continue to pass >>>>>> with my patch. >>>>>> >>>>> >>>>> this works in OL 2.11, not in OL 2.10 for me !-( >>>>> I guess there is something similar to do in OL 2.10 ? >>>> >>>> Your initial mail was about OpenLayers trunk/2.11 introducing >>>> regressions. Now the failing test that remains is OL 2.10-only, so OL >>>> trunk/2.11 works better than OL 2.10 for you. Yippee! :-) >>>> >>> >>> My initial mail was really about regression between 2.10 and 2.11 !-) >>> >>>> (Not sure it is worth "fixing" OL 2.10 for that.) >>>> >>> >>> Well, one of my test is versus the current release (2.10) and I am sure >>> there are users that will migrate slower than us (I mean OL and IGNF) >>> ... >>> >>> I do think it is worth fixing it ... at least to prove there is no >>> regression !-D >>> >> >> I've got somethinf working, hence ugly :-) >> >> OpenLayers.overload= function(P,F) { >> var pProtoInitialize= typeof(F.initialize)=="function"? >> P.prototype.initialize >> : null; >> OpenLayers.Util.extend(P.prototype, F); >> if (pProtoInitialize!==null) { >> // override sub-class having same constructor: >> for (var pn in P) { >> if (typeof(P[pn])=='function' && >> P[pn].prototype.initialize===pProtoInitialize) { >> var f= {}; >> eval('f= >> {"initialize":'+F.initialize.toString()+'}'); >> P[pn]= OpenLayers.overload(P[pn],f); >> } >> } >> } >> >> return P; >> }; > > Hi Didier. Just to say that I personally wouldn't rely on an overload > function that assumes subclasses use their parent constructors as > their namespaces. >
Hi Eric, The key issue here is just to progagate the constructor's change to sub-classes. One can imagine a third parameter (propagate - {Boolean}) to the overload method (or an {Object} holding options like propagate), but in that case, the behavior of 2.10/2.11 are not aligned when applying your patch (on the other hand, without your patch no way to propagate the changes to sub-classes constructors !) ... > -- > Eric Lemoine > > Camptocamp France SAS > Savoie Technolac, BP 352 > 73377 Le Bourget du Lac, Cedex > > Tel : 00 33 4 79 44 44 96 > Mail : eric.lemo...@camptocamp.com > http://www.camptocamp.com > -- RICHARD Didier - Chef du pôle technique du Géoportail 2/4, avenue Pasteur - 94165 Saint Mandé Cedex Tél : +33 (0) 1 43 98 83 23 _______________________________________________ Dev mailing list d...@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/openlayers-dev