COM Aggregation fixed ... how do I distribute?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

COM Aggregation fixed ... how do I distribute?

Antony Blakey-4
Hi,
    I've fixed COM aggregation in D5RC1 using the mechanism suggested by
Blair in a related thread (at least for the case of an external object
aggregating a Doplhin object), but I'm unsure how about two things:

1. How do I ship this when it involves changes to core classes,
specifically changes to an existing methods?

2. How should I write SUnit tests that include an external non-st component?

I haven't written any tests yet - my app is primarily COM, including
pure dispinterface exports etc, so I'm confident enough for my own
purposes (actually, I on a killer deadline so 'works for me' will have
to do right now).

-------------------------
Antony Blakey
mailto:[hidden email]
Linkuistics Pty Ltd
Adelaide, South Australia


Reply | Threaded
Open this post in threaded view
|

Re: COM Aggregation fixed ... how do I distribute?

Antony Blakey-4
Antony Blakey wrote:
> 1. How do I ship this when it involves changes to core classes,
> specifically changes to an existing methods?

I should clarify: I'm asking about passing the source to others i.e.
posting to a news group/on the web etc. Obviously I can 'ship' in the
application sense.

-------------------------
Antony Blakey
mailto:[hidden email]
Linkuistics Pty Ltd
Adelaide, South Australia


Reply | Threaded
Open this post in threaded view
|

Re: COM Aggregation fixed ... how do I distribute?

Bill Schwab
Antony,

> > 1. How do I ship this when it involves changes to core classes,
> > specifically changes to an existing methods?
>
> I should clarify: I'm asking about passing the source to others i.e.
> posting to a news group/on the web etc. Obviously I can 'ship' in the
> application sense.

Probably the easiest way is to mark your changes with a symbol, perhaps
#abChanged, and then file those out.  Each method would look something like

someMethodYouChanged
   "The #abChanged. below can appear anywhere.  It does not have to be on
    the first line, but it won't help if it's in a comment.  Now browsing
for references
    to #abChanged will find this method."

    #abChanged.
    "Code..."

Migrate allows one to define safe and dangerous selectors and will file them
out to respective files; changes to D5 broke that feature, but, hopefully
the attached restores it.  Alternatively, you can look at its use of
ChunkSourceFiler and do something similar.  Finally, you can simply drag
methods to a workspace to file them out.

Have a good one,

Bill

--
Wilhelm K. Schwab, Ph.D.
[hidden email]



begin 666 MigrateAndCodeGenerator.zip
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
M9[?J1,R4G?H2/7\'1/(IU;??Y>TACJN@[D:B92[EC5=X.KRLR/*CA.1?R'-
M7QX42 CYPCIA>--8+ZNRTE1W&^.%\$]L=T_P;T-X)$K2X3")PB=I.N@_"<-Q
M_*27]K,G@;J&27\<C::1&QYI%1%Q086;1D"U>G%SS0Z-<[$.5TLR/P!>E'<E
M&6GTMQM7>X2X]@KSV:?XA!%?0^E$[93\=W4QW2']06\V# OZF<01KJ:I-<AX
MRUI#A1<;DK%HB#A:0_:B#*7.#2-I0^\X*/H3_T80KM? 693,)FL0K&IJ)!8U
MQ;AA<.^&\P^SWQ;@XIOIXMJX?H5*((*=%@LW<9M.R^]A9SP8N3/9M#^_*BSY
M?Z,'_YVB*KI""&RR@M+S[.T`PQ(+/!^AIX4&B?N6J6"X72Q\<4WV<D==/F.'
M&OZHVRDV460@TB Y["->3\[=F*TY$HS3?2ME.HXH*8+47APA9EP^$1.89E"J
M=8^[VOB1LTYGLJ1=V+CU$Y,T+V&;[!76U:W)QH2>5NOK%XW\54?LL5IQ61C"
MG!G:GH9Q!5T<D<X'VJMYGS?S/>V@4?J4'C,0V7SVT\VUWGGBZP^A:VO.9P\?
M=IV(#KG94(5U5A99<^%Q>W2BSXPY4P/LJO6KB!^Y@^[6&$JXD4-&7^0D:P^J
ME7;_F\")O*7#!629PV;-_^Y^1_E?IT]+`ZB8\S%OAC5]I9<<+E9B]!()`?7D
M8UYUZ-7HM$IT4'K]$BTD\_VH"K]8GI_@*'!\KD53*8DJ>@)W@=U)R38J.[O+
MCNY*)_=3`1+ ISCYP*2V-T9AE6-!'4VO/P(=7<TE*NRX#3I?.E^*W3*(+6;6
M1YMU)RSY'LJSK+A>U8^2)R4)4_"@8D#R<OX4KSV[;;1QZ4)1ZYUB9,I0]5/G
M_^NIBU,%S"IJG+$\P2WP:]R7^NXS@&-AE*9:D>.6ZW L+N9<2&6QQLW1ZATE
M+RFX1[%+/#Q(F]YKCV]905"[E\\$M:LAT$2E-*"!CD%*["JB))O:GW?-'3)=
M8J8OM 9@R'#5>178_4-O;*GM-O[2II[VDS@2XQR01:$^;7PK6^J:!7DF7&<T
M/G7Y%\ZTTIA_XWBYB0!T;T^-CNQY/*OP4A?:!X8>D39<KEK-QD13+]B=>??4
MX.GJ7FFO%GE0JF([7FYU=#?:!D)(DF.X/IBY70.&@Q4C+Q87R^[UD2AKA9;"
MN^EG&%I9@>Q@905V?<.I"]&OI!NJH;Y?`?]X.5_*7DH(P6!AI'7'JM3SYO.G
MV9K>?DT[TI#?%QO4=-IMH9'_XFZHHY'BAI B?02/"G"/'EEKB-%D90&><IG]
M&9:26%&!++EY9.2:,YXMKIP,?!@U0@:T-MJTBA:);Z0EC08;6WE'\HLV+4HY
M_VA8\+)@0B,TJ S^(/TC&L#4?_\`6P`^PO80V*,`"K/2F[GJ5NETATIT.K;>
M[%&]-F0STUO7-,!SHV:!PJ:BH+*I-BTQ0F#$'*5LVG=4;8$%G'/J$R"3G':
MB\28JP;-%I0="^8YN:O#]@73S[,EZU$@YNDILKJT*_,+BEE2Y\$84]\@40%7
MT=$0C$"Q?A984'U(7T(O;(EZX]L/#&/ 8F]EU>=I^2$UG)M/KU>3Y06MC[IT
M^!\-/X[]Z^" O6"DS='^-(X)\!((<W>XYP/#U6R@&#<R'CS2T7!AN1\O:,=
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
MWG!K>RG!+K0_Y=);V[.@[hidden email]--]B5R2Y=E"F%@[XNE1'*:^0]=+$5=J+2
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
MCUZX$N\*IKTW>"+<T+C&PA1F?U3\ZMW.T^G'$?W;9.F+I8$5$FU5T&APN$M
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
M#?C4TA=9W<6[DO!%[hidden email]*"U*-T$L-^PD,_CO<QW(-A<XT2K]5M?%H
MXRI6PEQCULWT(<(ZT?276.[7.#D&RDQ?87F,Y;[*!F99@$W1XY?D1Z^4`HP?
MPN0^PE)F,I.OQ[R"4ZKT%6A#\+.4S8CM&_%94VV\.HFF:O$AD@8:##$A`Q;?
MW"!]P_A>,XLXVPW?027T,=Q\NQ$[70<XDR.N'L4E7%+!TP3O6!K/TUQ\N?P&
M9&WK+40'=$$;7400K^B[X[<178>9JL/<A^_H6^3BKRJ$=]'\Z=A;K &/]);^
M[@!'(Y0[RR]^W6N,R,7M3@E>% N!!%ZY0*! @,>87(/9G4<A7@;\$$T_TG!"
M*J>+`Z0)$UPLWS#EN"FKMC]H^$H8`IWI.K.$5&V3B8SXF6P*88CL/A:V(?L4
MT]_4T,RE,I/JC;QB0WUV&TM3T,0&B8BV*^T8.-)!$ 'ZTMCG+6"E],+8HKBG
M8CV]Q+"3?1(7P[5:I[1*3E5Z7K0=*3.-I91_1=Y?O X?JI+%`6Z]BS.^&YKW
M\=YS-UD8:%TOEJLG5)X%5EV6<XWW+>HM+H8SC>!+T2A_J8XNQ\$[2O$M3/Q,
M1)O$515%6XAQ#C"0A.55<V/!%M!<$=,.9U"AQDY@6J[6JC&_$*[EE78%7'=*
MNV""\ :[PDXWA >0DR?H%)+9_&50;6-:<9Y\*YBZ?:O!=#-</2F6:<M,_-F0
M\EVCW,#N19R1PO3H'J-"KBJK+^&Q6]W'6V>T;6WUI5W3@VN;V-&O=!$WN6V\
M;%)<.(G';^BO`SVFV4>M]/?VAW?7(]&>1-%,?BDKBS[%>*M1F)MQ++C,1^VB
M4+1O"$6Y;!P0KW)!XJERJ/K5E1I^RF\8E3;W)45%'_ HSD.VFM-X0:WQ@W%=
M*^*G+B9UG1"F]_4GA$47K> F?Q,-C4X%[XD;S F5'11#-6 UY9@&D)I60DO[
M#@T=E[/HIR^P`]*TK6R@$R9KI7F'3G6-<O\KS_X[1O)O0_S$?W>(/Q_)S^*O
M_@`@1F'DU>-)297U1XA>L[T8>4=\I3Z6<P0:-P`DNGS"/S$$L^(O%UD6/E&/
M_XQ^534?O]/O]GL]WV]WVWZ[%\ _XW:[W6G3TP^"8= ?#/H^_-L-)H/^P ^Z
M0;\MG^MVQ^]!/X)A]Q)O>_Y@..@%_5YGX,/[SF#8ZT!K%_M2;[_?AO>3P=E@
M*,%V`_@'/I7'7OB=`?:P\+YNGQ'>%XRWP$=B7X(/_?WVE4:GP+0;C&$.P*H"
MHP![#GK0-@RN@T%[P-!ZP208#]K!&;X?^CSDBEN!QN :J.C0*."-Q,M'F,#+
[hidden email]\QA(F_R1L@-X>XNL'`^#0D.;HX^\#8(@VN-OK$9T^$5#_#.0,&Q[0
MDXZ/R!.?VBA%F'V(E *=8\)K2)I08 (\[UPH7@\#Q!9Q!@F#3N#H;@$#X W+
M4AA<F&C(CXKGE^('S#^!_RYA_G8?.>^#9/N*BXQ3WX*V"7J'\>A=#?H@;\2\
MC7#[H,OXL\ ?YA^"'O6DI.7,G;$Y@Y2'+=^)A6EO",K4(3G2FS/67%BO75PG
M<IR<MW<%6"!_B_FN66)2TT%C39RWYW:'5T\/I(^SP;_]H.>"K>BSGP#)0OI,
M;2".=LB*G/7;! ^U8]BN>N1*#$ ED4.2'U<$M;!7_##B!=]9$&3_)D4'HN4*
M_NN 3O8DM![9I.#*!@>C>\AC-;LYND?6L8O6`TP'<T;!`$L*_TO+!;3".!\I
M+\M%\9\_!S0/Z.+0K8UJ=4@N&?T5&'Z BH[!`Y0)ZC%)N)H'HON%;UD0AC*V
MWE]?F)\5CJQD)DW@,4"C2JO<Z..W`^IET_-2C#HL(Q=&O6NR5F3A@X"UM">\
M`V!W!G;B&JQ05\%B32QA3G#\*QO2H&M30PY/?W;%=[84B#M8D+;0GX*&D@X9
M_6PLAR8NC1]E]\[X)SCW"3RRO;%%0F_:11XJBP@^8"!\=X<XNPF27,-#EDD-
M++*MG6+M"OFC9 >]9UK6MCE[;TA6!/V\L"8=X><KI<E2`NSZ%%N0;6TW?, "
MC-$6*>]C>3-AX4$OK@K[5<)<:0YJ"F@T^@C 7=HDO].FM5!)`<]-E@P64\!O
MFG*NW^68I,(C@<7O402%D<$$N'Q)T=]D0!PK(EP?/>R5\"0P]@S]JHKH^B#3
M0O<[:D0?M<=<XS *>Z,FB+A78,%CSCKBMXWQ#:^$/G(6:0M$3 G0)^ M+@2%
M)1Z"%J*]MJ,,V<]G:ON78%PN`K;L?AO#EN)3L$&BP/$.O 5KUK]2,TG>6%+>
M2"?K%?E^D)TK.NPQ'=6Y@@0[N11Q4W_8Z0RO@4L`I]+:2YXUI+9M/](ZLX\:
MM]M&G[.")_18AK-X+/Q\IE927;EN.)(A/>.XO"KZ"E0`(3P^Z3CJ)ED7C",&
M'>!!GSQ<044%9FH6R0%<.9<NJ*B[<G2E'"20+EFO#DNV!_I)JTY8M.Z%K=.8
MF2#'27.&AM6SUBED28.V]OA#(2GI;:2D?*O?1@]J6 <9+VF8RC7/.&\]#TM"
MSE"&O*TM5CK)>@"&;MB[AH!UTH?0N3?N=7K='G@>^/^ZK_@9^$+7?*;;MW(;
M.?UDPV.-:L/")OP'LF7#2K#E..Z8/^4C8R_)OVVS/RV?Q\RD\ (JKQ];?)=/
MTRR//ZAL_:R(@]R/07?-@VOB0L/<E9UO6M7Z^L)5W1'5FP`]F=(D.=KV0,0K
MT->M,VX9SZF,FR)CX'9?KJ]^0#EC%>\E#S?Q'I2\TVT7&7:??$K-P[P?V'$W
M/Q(/-2^3]N)LA*TK^B?TC8.NL_X0"-U4<F ]PC1=M/C7^-_OEEW(>!1L>1]C
M.EHSML_"L$NVV9CM*J^DB'P@HO,>Y==!P26V#, E;MDY%FPC#2R&9$,HX[/Y
M!9AHK;O&1H+3L9&1Y<"7*TWC#\<T*,1RKZ:ZU'C%\&@'E3WNUXQ*_LE<'& ^
M1G80XA&*$]O!68^S#(<F<$L#WF^'E8K-KZ\`UID3JR[7Q(#/#LW@5LI6=HV=
MM#(U/.O[U'*F<:U8QZK-QJS<MZ?FD'T^EQ728_L:VRFRQ8G&<[8=Q'/1!A)Q
M6]"AB6'CQ_9'P:3;OO8'`_*WF']>HP>$3$A$'0'JA-",*H@^K]9KWRK[;_+T
MC($=C_98]VQ/:L=?TF_Z$W=[A^/LWJ7@G?2T]GR7]GP=]7Y8-Z[2]DI\2A+O
M^U13@>RD'$M3%G/6;LO]%>!Z@*M"@9>:*OOSY^=BAY46%=N(*OZ0LGRPL&7L
MY$<Y6]<W(\:=Q>BL$QVF9<A37TIXFV)T*Y*5]@6X8T19I5@;^"!J3^1E!K[(
MKAR19, <V'4<.%:UB(KG,\>!$Z;K]X[D^HSIYXC1+FS8.XN[)C;DG<91/8Z
M_CWBH;&-[<YBF@['L9\G)@ELZ'^0J.+*QNL+1@6^WRYVWAS/OXOOE]:UJ>]O
MLY^L&G?-GL,>!SF :<4KO'85W!Z_K_*_<MS6_I>?+^5_5=QP86KL%KMC&T]Q
MV+HEYQQ:[Z5GE[RT<^; B@5D38E[;5_/8UZ*\R&EDQI6;:UI_$ MG9ZR4%?,
M*UB)IDUH6&_K,;<NK3BD;ULMK-U>XK[70/"H'UP5F8SLU+&KK:9%W/C8^[,#
M6,>DG_S(7;HS_GEIU38W/1OK1]>XD\45]N[6UJV(.I]GW3KFSZH=!+F;)V7?
M- ?HR!I5.2?%_:XAQQAGN$<7!&(7NG(?I(+62@Y+B8JZL,\X!&.C=_%L31MK
M+U#4#:YH;TGLB/8"N9?9H[-UM%L*%/8&`VS7WY76GK2.UEK[;%F0]<B="@5N
M6RO,MFMK/9;>YZ5ZS#':)CV6MN]S\_6,\95\[4F;V7!=2\\B/8C4ARKO)ZE6
M08#E!<]XO.W!Y'Z96CL<]6A[QGQB0G+.[BE]E]R1&72ISC-$N\[KOB//D/#(
MK:V1W;ZUEO'/9VO9I?FS4LOZ`H)$SIYO4A$+*LO"'%(\'9!%Z5.=LH?>SV^+
MD\EB#VG0E3-]MFC-VFD<#EF?!]OIL]2SK2,;IJK?I?.I&)GU]/W)MD77L_8G
MVXBF'2593\/3Q%_*_DTJLA2IF?*MI/-SVS^YXRWMG[2'SXWNI?6I:E>G9>5G
MCJS:UJ.,XM;GW#[G.?L.>X<.TU:<D2,;.A:[TE@I[V%LCSMMXJ076X5M3MS*
MN50<:IRK4Y@PE>63`>K$/YTC#";$R8GB!\=!`(].S]O?HT!O$H@S3<Y3\6I^
M_AP8? +OXG=!Q-V>CW'6N*A=MUZ+JSS^%U!+`0(4`!0````(`'=,E"S05@[0
MJ$<``(R&`0`+``````````$`( "V@00```!-:6=R871E+G!A8U!+`0(4`!0`
M```(`-VTC"R?:94%?R ``&F@```1``````````$`( "V@=5'``!#;V1E1V5N
@97)A=&]R+G!A8U!+!08``````@`"`'@```"#: ``````
`
end


Reply | Threaded
Open this post in threaded view
|

Re: COM Aggregation fixed ... how do I distribute?

Antony Blakey-4
Bill Schwab wrote:

> Probably the easiest way is to mark your changes with a symbol, perhaps
> #abChanged, and then file those out.  Each method would look something like
>
> someMethodYouChanged
>    "The #abChanged. below can appear anywhere.  It does not have to be on
>     the first line, but it won't help if it's in a comment.  Now browsing
> for references
>     to #abChanged will find this method."
>
>     #abChanged.
>     "Code..."
>
> Migrate allows one to define safe and dangerous selectors and will file them
> out to respective files; changes to D5 broke that feature, but, hopefully
> the attached restores it.  Alternatively, you can look at its use of
> ChunkSourceFiler and do something similar.  Finally, you can simply drag
> methods to a workspace to file them out.

Thanks, that helps. I'm looking forward to getting STS to handle some of
this once a D5 version is out.

Is there a mechanism for deleting an existing method using a patch - I
know I could simply mark the method as deprecated, and/or change it to
"self shouldNotImplement". Is there a 'Dolphin way'?

-------------------------
Antony Blakey
mailto:[hidden email]
Linkuistics Pty Ltd
Adelaide, South Australia


Reply | Threaded
Open this post in threaded view
|

Re: COM Aggregation fixed ... how do I distribute?

Blair McGlashan
In reply to this post by Antony Blakey-4
"Antony Blakey" <[hidden email]> wrote in message
news:[hidden email]...
> Hi,
>     I've fixed COM aggregation in D5RC1 using the mechanism suggested by
> Blair in a related thread (at least for the case of an external object
> aggregating a Doplhin object), but I'm unsure how about two things:
>
> 1. How do I ship this when it involves changes to core classes,
> specifically changes to an existing methods?

Two approaches:
1) A package of loose methods.
2) A simple chunk script file.

The advantage of (1) is that it makes it easy to see all the changes.
However the user will get prompted as to whether they want the methods
overwritten (which may not be a bad thing), also if the package is
uninstalled the system will be damaged so it is usually a good idea to
prevent that by including a "self error: 'Sorry, can't be uninstalled'" in
the package pre-uninstall script. We use ordinary file-in's for patches
ourselves, as this is the best way to update the system in a reliable way,
but it may not necessarily fit your needs. Actually you can use a
combination of both by putting file-in's into the package post-install
script. This is probably the best choice, as you can everything you could do
in a simple file-in from the package script anyway.

>
> 2. How should I write SUnit tests that include an external non-st
component?

I have done this to test an external library (mainly to reverse engineer its
behaviour), but it will only work if the process can be initiated from
Smalltalk. Otherwise there is CppUnit!

Regards

Blair


Reply | Threaded
Open this post in threaded view
|

Re: COM Aggregation fixed ... how do I distribute?

Blair McGlashan
In reply to this post by Antony Blakey-4
"Antony Blakey" <[hidden email]> wrote in message
news:[hidden email]...
> Antony Blakey wrote:
> > 1. How do I ship this when it involves changes to core classes,
> > specifically changes to an existing methods?
>
> I should clarify: I'm asking about passing the source to others i.e.
> posting to a news group/on the web etc. Obviously I can 'ship' in the
> application sense.

Well if you posted it here, then it is more likely that you won't need to
bother distributing it after the actual D5 release :-)

Regards

Blair


Reply | Threaded
Open this post in threaded view
|

Re: COM Aggregation fixed ... how do I distribute?

Antony Blakey-4
Blair McGlashan wrote:

> "Antony Blakey" <[hidden email]> wrote in message
> news:[hidden email]...
>
>>Antony Blakey wrote:
>>
>>>1. How do I ship this when it involves changes to core classes,
>>>specifically changes to an existing methods?
>>
>>I should clarify: I'm asking about passing the source to others i.e.
>>posting to a news group/on the web etc. Obviously I can 'ship' in the
>>application sense.
>
>
> Well if you posted it here, then it is more likely that you won't need to
> bother distributing it after the actual D5 release :-)

Actually, that's what I hoped but I didn't want to imply that I thought
you would or should incorporate my fix. I'm double checking the
aggregation AddRef/Release stuff, then I'll post.

-------------------------
Antony Blakey
mailto:[hidden email]
Linkuistics Pty Ltd
Adelaide, South Australia