<div dir="ltr">The become is not absolutely necessary, it&#39;s just future proof<br>In Morphics-nice.687<br><br>Item was added:<br>
+ ----- Method: MultiNewParagraph class&gt;&gt;initialize (in category &#39;class initialization&#39;) -----<br>
+ initialize<br>
+       &quot;Prepare our own funeral&quot;<br>
+<br>
+       MultiNewParagraph allInstancesDo:[:mnp| mnp <span class="">becomeForward</span>: (mnp as: NewParagraph)]!<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/10/3 Chris Muller <span dir="ltr">&lt;<a href="mailto:asqueaker@gmail.com" target="_blank">asqueaker@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Actually, Nicolas&#39; advice is what I was looking for.  Of course I use<br>
Ma-Serializer but regardless of serializer I am trying to figure out<br>
my process for upgrade.  To do that I want to be clear about the<br>
actual before-and-after state of the domain, which parts needing<br>
upgraded and what that upgrade is.  And also how it would integrate<br>
into an upgrade process.<br>
<br>
Nicolas seems to be saying the domain change is that any persistent<br>
MultiNewParagraphs need to become equivalent instances of<br>
NewParagraph.  I like the idea of moving MultiNewParagraph to<br>
45Deprecated for one release until 4.6.<br>
<br>
What I&#39;m a little unclear about still, how can I create the equivalent<br>
NewParagraph instance to become to?<br>
<div class="HOEnZb"><div class="h5"><br>
On Thu, Oct 3, 2013 at 1:01 PM, Bob Arning &lt;<a href="mailto:arning315@comcast.net">arning315@comcast.net</a>&gt; wrote:<br>
&gt; Since Chris has not responded with the particular serialization method<br>
&gt; employed, there&#39;s not much real advice to be given. The particular method<br>
&gt; may well have a way to deal with this.<br>
&gt;<br>
&gt; Cheers,<br>
&gt; Bob<br>
&gt;<br>
&gt;<br>
&gt; On 10/3/13 1:48 PM, Nicolas Cellier wrote:<br>
&gt;<br>
&gt; We could as well restore an empty MultiNewParagraph in *45Deprecated, then<br>
&gt; let you becomeForward: each MultiNewParagraph into a NewParagraph<br>
&gt;<br>
&gt;<br>
&gt; 2013/10/3 Bob Arning &lt;<a href="mailto:arning315@comcast.net">arning315@comcast.net</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; That&#39;s one way. Another is &#39;save morph in file&#39; from the metamenu.<br>
&gt;&gt; Question is which Chris used.<br>
&gt;&gt;<br>
&gt;&gt; On 10/3/13 6:33 AM, Edgar De Cleene wrote:<br>
&gt;&gt;<br>
&gt;&gt; On 10/3/13 6:55 AM, &quot;Bob Arning&quot; &lt;<a href="mailto:arning315@comcast.net">arning315@comcast.net</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;    One questions is: how were they serialized?<br>
&gt;&gt;<br>
&gt;&gt;  Cheers,<br>
&gt;&gt;  Bob<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Here you have how to exchange serialized objects between Squeak, Pharo and<br>
&gt;&gt; Cuis.<br>
&gt;&gt;<br>
&gt;&gt; For Pharo 2.0 you need fileIn ReferenceStream logic first.<br>
&gt;&gt; Drag any .obj into World and you got a Inspector of on it.<br>
&gt;&gt;<br>
&gt;&gt; !Object methodsFor: &#39;objects from disk&#39; stamp: &#39;edc 9/6/2008 19:40&#39;!<br>
&gt;&gt; fileOutCompressed<br>
&gt;&gt;<br>
&gt;&gt; | unzipped zipped buffer aFileName |<br>
&gt;&gt; aFileName := self class name asFileName.    &quot;do better?&quot;<br>
&gt;&gt;     aFileName := UIManager default<br>
&gt;&gt;                 request: &#39;File name?&#39; translated initialAnswer: aFileName.<br>
&gt;&gt;     aFileName size == 0 ifTrue: [^ Beeper beep].<br>
&gt;&gt; Cursor write<br>
&gt;&gt; showWhile: [unzipped := RWBinaryOrTextStream on: &#39;&#39;.<br>
&gt;&gt; unzipped fileOutClass: nil andObject: self.<br>
&gt;&gt; unzipped reset.<br>
&gt;&gt; zipped := FileDirectory default newFileNamed: aFileName , &#39;obz&#39;.<br>
&gt;&gt; zipped binary.<br>
&gt;&gt; zipped := GZipWriteStream on: zipped.<br>
&gt;&gt; buffer := ByteArray new: 50000.<br>
&gt;&gt; &#39;Compressing &#39; , self name<br>
&gt;&gt; displayProgressAt: Sensor cursorPoint<br>
&gt;&gt; from: 0<br>
&gt;&gt; to: unzipped size<br>
&gt;&gt; during: [:bar |<br>
&gt;&gt; [unzipped atEnd]<br>
&gt;&gt; whileFalse: [bar value: unzipped position.<br>
&gt;&gt; zipped<br>
&gt;&gt; nextPutAll: (unzipped nextInto: buffer)].<br>
&gt;&gt; zipped close.<br>
&gt;&gt; unzipped close]]! !<br>
&gt;&gt;<br>
&gt;&gt; !Object methodsFor: &#39;objects from disk&#39; stamp: &#39;edc 6/20/2011 11:41&#39;!<br>
&gt;&gt; saveOnFileNamed: aString<br>
&gt;&gt;     &quot;Ask the user for a filename and save myself on a<br>
&gt;&gt;     ReferenceStream file. Writes out the version and class structure.<br>
&gt;&gt;     The file is fileIn-able. UniClasses will be filed out.<br>
&gt;&gt;     This save objects as .obj&quot;<br>
&gt;&gt;     | aFileName fileStream |<br>
&gt;&gt;     aString isEmpty<br>
&gt;&gt;         ifTrue: [^ self error: &#39;name is missing&#39;].<br>
&gt;&gt;     aFileName := aString , &#39;.obj&#39;.<br>
&gt;&gt;     fileStream := ReferenceStream fileNamed: aFileName .<br>
&gt;&gt;     fileStream nextPut: self.<br>
&gt;&gt;     fileStream close.<br>
&gt;&gt;     ! !<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; !Object class methodsFor: &#39;objects from disk&#39; stamp: &#39;edc 6/20/2011<br>
&gt;&gt; 12:16&#39;!<br>
&gt;&gt; readAndInspect: inputStream<br>
&gt;&gt; | o rr |<br>
&gt;&gt;     rr _ ReferenceStream on: inputStream.<br>
&gt;&gt;     o _ rr next.<br>
&gt;&gt;     rr close.<br>
&gt;&gt;     o inspect! !<br>
&gt;&gt;<br>
&gt;&gt; !Object class methodsFor: &#39;*services-extras&#39; stamp: &#39;edc 2/14/2008 08:24&#39;!<br>
&gt;&gt; fileReaderServicesForFile: fullName suffix: suffix<br>
&gt;&gt;     | services |<br>
&gt;&gt;     services _ OrderedCollection new.<br>
&gt;&gt;<br>
&gt;&gt;     (fullName asLowercase endsWith: &#39;.obj&#39;)<br>
&gt;&gt;         ifTrue: [ services add: self serviceLoadObject ].<br>
&gt;&gt;     ^services! !<br>
&gt;&gt;<br>
&gt;&gt; !Object class methodsFor: &#39;*services-extras&#39; stamp: &#39;edc 7/27/2008 08:11&#39;!<br>
&gt;&gt; readCompressedObject: aFileStream<br>
&gt;&gt;<br>
&gt;&gt;     self readAndInspect: (MultiByteBinaryOrTextStream with:<br>
&gt;&gt; (GZipReadStream<br>
&gt;&gt; on: aFileStream) upToEnd) reset! !<br>
&gt;&gt;<br>
&gt;&gt; !Object class methodsFor: &#39;*services-extras&#39; stamp: &#39;edc 7/27/2008 07:40&#39;!<br>
&gt;&gt; serviceCompressedObject<br>
&gt;&gt;     &quot;Answer a service for opening a saved Object&quot;<br>
&gt;&gt;     ^ (SimpleServiceEntry<br>
&gt;&gt;         provider: Object<br>
&gt;&gt;         label: &#39;gz saved Object&#39;<br>
&gt;&gt;         selector: #readCompressedObject:<br>
&gt;&gt;         description: &#39;open a gz Object&#39;<br>
&gt;&gt;         buttonLabel: &#39;object&#39;)<br>
&gt;&gt;         argumentGetter: [:fileList |<br>
&gt;&gt;<br>
&gt;&gt;             fileList readOnlyStream]! !<br>
&gt;&gt;<br>
&gt;&gt; !Object class methodsFor: &#39;*services-extras&#39; stamp: &#39;edc 2/14/2008 08:26&#39;!<br>
&gt;&gt; serviceLoadObject<br>
&gt;&gt; &quot;Answer a service for opening a saved Object&quot;<br>
&gt;&gt;<br>
&gt;&gt;     ^ (SimpleServiceEntry<br>
&gt;&gt;         provider: self<br>
&gt;&gt;         label: &#39;saved Object&#39;<br>
&gt;&gt;         selector: #readAndInspect:<br>
&gt;&gt;         description: &#39;open a Object&#39;<br>
&gt;&gt;         buttonLabel: &#39;object&#39;)<br>
&gt;&gt;         argumentGetter: [:fileList | fileList readOnlyStream]! !<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br></div>