[squeak-dev] Upgrading serialized Morphs to new Paragraph stuff

Bob Arning arning315 at comcast.net
Thu Oct 3 21:56:24 UTC 2013


Well, the answer is probably quite easy, but the lack of details makes a 
precise answer problematic. If, e.g., you had used Morph>>saveOnFile to 
serialize the object, then the required change would be:

'From Squeak4.5 of 2 October 2013 [latest update: #13063] on 3 October 
2013 at 5:55:30 pm'!

!SmartRefStream methodsFor: 'conversion' stamp: 'raa 10/3/2013 06:20'!
multiNewParagraphttfclpomsswfcspp0

     ^ NewParagraph! !

Cheers,
Bob




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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20131003/30a75f12/attachment.htm


More information about the Squeak-dev mailing list